1
mirror of https://github.com/TeamNewPipe/NewPipe synced 2025-09-19 23:40:51 +02:00

Compare commits

...

523 Commits

Author SHA1 Message Date
Mohammed Anas
4e633504a8 Merge pull request #7753 from TeamNewPipe/release/0.21.16
Release 0.21.16
2022-02-01 16:18:52 +03:00
TobiGr
144a10f7a6 Release 0.21.16 (982) 2022-02-01 13:44:19 +01:00
TobiGr
72a2644f25 Update NewPipe Extractor to 0.21.13 2022-02-01 13:41:12 +01:00
TobiGr
ff8868f6a3 NewPipe version 0.21.15 (981) 2021-12-23 23:41:20 +01:00
Robin
8c6e37d1d1 Disable media tunneling on Philips QM16XE 2021-12-23 23:35:04 +01:00
litetex
c90237c14c Removed/Reverted MediaParser support (Android 11+) due to bugs 2021-12-23 23:33:55 +01:00
litetex
3750561b4d Merge pull request #7475 from litetex/release/v0.21.14
Release/v0.21.14
2021-12-11 17:06:29 +01:00
Hosted Weblate
6b026557d4 Translated using Weblate (French)
Currently translated at 99.5% (628 of 631 strings)

Translated using Weblate (Hungarian)

Currently translated at 3.2% (2 of 61 strings)

Translated using Weblate (Punjabi)

Currently translated at 4.9% (3 of 61 strings)

Translated using Weblate (Telugu)

Currently translated at 6.5% (4 of 61 strings)

Translated using Weblate (German)

Currently translated at 50.8% (31 of 61 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Punjabi)

Currently translated at 91.4% (577 of 631 strings)

Translated using Weblate (Telugu)

Currently translated at 38.1% (241 of 631 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Japanese)

Currently translated at 99.2% (626 of 631 strings)

Translated using Weblate (Russian)

Currently translated at 99.8% (630 of 631 strings)

Translated using Weblate (Serbian)

Currently translated at 96.5% (609 of 631 strings)

Translated using Weblate (German)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Tamil)

Currently translated at 1.6% (1 of 61 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Polish)

Currently translated at 55.7% (34 of 61 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.8% (31 of 61 strings)

Translated using Weblate (Ukrainian)

Currently translated at 80.3% (49 of 61 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Japanese)

Currently translated at 98.8% (624 of 631 strings)

Translated using Weblate (Dutch)

Currently translated at 99.8% (630 of 631 strings)

Translated using Weblate (French)

Currently translated at 99.0% (625 of 631 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (German)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (English)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (English)

Currently translated at 100.0% (631 of 631 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Alex25820 <Alexander_sjogren@hotmail.se>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Human Beeing <thankful_human@mailbox.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Naveen <naveen.translator@protonmail.com>
Co-authored-by: Ricardo <contatorms7@tutamail.com>
Co-authored-by: Terry Louwers <t.louwers@gmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: rickeesingh <rickeesingh231@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: subba raidu <raidu4u@gmail.com>
Co-authored-by: translator <kvb@tuta.io>
Co-authored-by: Даниил Морозюк <morozdan2003@gmail.com>
Co-authored-by: Саша Петровић <salepetronije@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ta/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/te/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-12-11 16:51:35 +01:00
litetex
1ee137bbda Updated to NewPipeExtractor to version `v0.21.12` 2021-12-11 16:21:34 +01:00
litetex
2c88e9d068 Updated version to 0.21.14 2021-12-01 21:07:57 +01:00
litetex
4825a0a35f Update changelog (#7476)
* Added changelog for 980

Co-authored-by: Mohammed Anas <triallax@tutanota.com>
2021-12-01 21:06:12 +01:00
Hosted Weblate
122b0b0de4 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.8% (605 of 631 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (628 of 631 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (German)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (German)

Currently translated at 100.0% (631 of 631 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 99.3% (627 of 631 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 56.6% (34 of 60 strings)

Translated using Weblate (Portuguese)

Currently translated at 61.6% (37 of 60 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Arabic)

Currently translated at 99.8% (625 of 626 strings)

Translated using Weblate (Tamil)

Currently translated at 36.4% (228 of 626 strings)

Translated using Weblate (Chinese (Traditional, Hong Kong))

Currently translated at 39.1% (245 of 626 strings)

Translated using Weblate (Hungarian)

Currently translated at 82.2% (515 of 626 strings)

Translated using Weblate (Hungarian)

Currently translated at 81.9% (513 of 626 strings)

Translated using Weblate (French)

Currently translated at 66.6% (40 of 60 strings)

Translated using Weblate (Bengali)

Currently translated at 88.0% (551 of 626 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Chinese (Traditional, Hong Kong))

Currently translated at 35.4% (222 of 626 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (French)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Estonian)

Currently translated at 11.6% (7 of 60 strings)

Translated using Weblate (Portuguese)

Currently translated at 61.6% (37 of 60 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Hindi)

Currently translated at 77.3% (484 of 626 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (French)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (German)

Currently translated at 100.0% (626 of 626 strings)

Translated using Weblate (Galician)

Currently translated at 3.3% (2 of 60 strings)

Translated using Weblate (Galician)

Currently translated at 94.4% (590 of 625 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Chinese (Traditional, Hong Kong))

Currently translated at 28.4% (178 of 625 strings)

Translated using Weblate (German)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Arabic)

Currently translated at 60.0% (36 of 60 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Latvian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (622 of 625 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (French)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (German)

Currently translated at 100.0% (625 of 625 strings)

Translated using Weblate (Spanish)

Currently translated at 58.3% (35 of 60 strings)

Translated using Weblate (Interlingua)

Currently translated at 1.6% (1 of 60 strings)

Translated using Weblate (Bulgarian)

Currently translated at 78.6% (489 of 622 strings)

Translated using Weblate (Tamil)

Currently translated at 34.0% (212 of 622 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Malayalam)

Currently translated at 99.0% (616 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Bulgarian)

Currently translated at 77.0% (479 of 622 strings)

Translated using Weblate (Bulgarian)

Currently translated at 58.5% (364 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Persian)

Currently translated at 63.3% (38 of 60 strings)

Translated using Weblate (French)

Currently translated at 66.6% (40 of 60 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 45.0% (280 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Croatian)

Currently translated at 98.8% (615 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Arabic)

Currently translated at 58.3% (35 of 60 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Swedish)

Currently translated at 23.3% (14 of 60 strings)

Translated using Weblate (Polish)

Currently translated at 55.0% (33 of 60 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.0% (30 of 60 strings)

Translated using Weblate (Ukrainian)

Currently translated at 80.0% (48 of 60 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Estonian)

Currently translated at 10.1% (6 of 59 strings)

Translated using Weblate (Finnish)

Currently translated at 13.5% (8 of 59 strings)

Translated using Weblate (Esperanto)

Currently translated at 1.6% (1 of 59 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Esperanto)

Currently translated at 83.7% (521 of 622 strings)

Translated using Weblate (Esperanto)

Currently translated at 83.7% (521 of 622 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (French)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (German)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (59 of 59 strings)

Translated using Weblate (Swedish)

Currently translated at 22.0% (13 of 59 strings)

Translated using Weblate (German)

Currently translated at 52.5% (31 of 59 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 99.8% (621 of 622 strings)

Translated using Weblate (Kabyle)

Currently translated at 26.0% (162 of 622 strings)

Translated using Weblate (Catalan)

Currently translated at 97.5% (607 of 622 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (619 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (English)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 16.9% (10 of 59 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 99.3% (618 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 99.3% (618 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 99.3% (618 of 622 strings)

Translated using Weblate (Swedish)

Currently translated at 99.3% (618 of 622 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (German)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (59 of 59 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (French)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (622 of 622 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Persian)

Currently translated at 62.7% (37 of 59 strings)

Translated using Weblate (French)

Currently translated at 66.1% (39 of 59 strings)

Translated using Weblate (Spanish)

Currently translated at 57.6% (34 of 59 strings)

Translated using Weblate (Polish)

Currently translated at 54.2% (32 of 59 strings)

Translated using Weblate (Hebrew)

Currently translated at 49.1% (29 of 59 strings)

Translated using Weblate (Ukrainian)

Currently translated at 79.6% (47 of 59 strings)

Translated using Weblate (Dutch (Belgium))

Currently translated at 93.0% (578 of 621 strings)

Translated using Weblate (Swedish)

Currently translated at 98.8% (614 of 621 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.6% (619 of 621 strings)

Co-authored-by: ARtHryDr <sergivallsr@gmail.com>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <Alexander_sjogren@hotmail.se>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Andrij Mizyk <andmizyk@gmail.com>
Co-authored-by: Azizov Aga <895238489@e2t.link>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: D D <keptawesome@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Garden Hose <maxmammath@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: GobinathAL <gobinathal8@gmail.com>
Co-authored-by: Ha Thang <tadi69835@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Igor Sorocean <sorocean.igor@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Isak Holmström <isak@kajko.se>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Karl Tammik <karltammik@protonmail.com>
Co-authored-by: Kim Nyberg <kim-nyberg@outlook.com>
Co-authored-by: Laura Arjona Reina <larjona@larjona.net>
Co-authored-by: Lavin Tom K Abraham <lavintom007@gmail.com>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Leander Coevoet <leandercoevoet1@gmail.com>
Co-authored-by: LiftedStarfish <liftedstarfish@protonmail.com>
Co-authored-by: Line <LineAirline@protonmail.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Mohammed Anas <6daf084a-8eaf-40fb-86c7-8500077c3b69@anonaddy.me>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Nachimuthu Easwaran <nachimuthu.gct@gmail.com>
Co-authored-by: Nekromanser <ari.taitto@protonmail.com>
Co-authored-by: Oymate <dhruboadittya96@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Philipp <philipp.steisslingen@web.de>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: Retrial <giwrgosmant@gmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Ricardo <contatorms7@tutamail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: Tanishq-Banyal <banyaltanishq@gmail.com>
Co-authored-by: TiA4f8R <avdivers84@gmail.com>
Co-authored-by: Toldi Balázs <tbazsalanszky@gmail.com>
Co-authored-by: Valdnet <valdnet@itvix.pl>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Ville Rantanen <v.r@iki.fi>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: Zampa Yayas <zampayayas@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: evfjunior <evfjunior@protonmail.com>
Co-authored-by: g <muziejusinfo@gmail.com>
Co-authored-by: inkhorn <inkhorn@hostux.ninja>
Co-authored-by: naofum <naofum@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: sunu.wahyudhi <nopeholmes@gmail.com>
Co-authored-by: tdayris-perso <tdayris@tutanota.de>
Co-authored-by: translator <yasinoc375@advew.com>
Co-authored-by: whenwesober <naomi16i_1298q@cikuh.com>
Co-authored-by: zeritti <woodenmo@posteo.de>
Co-authored-by: zmni <zmni@outlook.com>
Co-authored-by: Ács Zoltán <acszoltan111@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eo/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/et/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/gl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ia/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-11-30 22:07:54 +01:00
litetex
7dc85af5fb Use latest NewPipeExtractor to fix parsing of YT's dislikes (#7467) 2021-11-29 19:59:18 +00:00
Stypox
c7daf32904 Merge pull request #7142 from litetex/better-player-error-handling
Better player error handling
2021-11-28 17:01:45 +01:00
litetex
4c8dca5300 Fixed NPE + Problems with context 2021-11-28 13:42:26 +01:00
Robin
ef91214085 Merge pull request #7442 from mhmdanas/fix-gradle-sha256
Fix Gradle checksum
2021-11-26 09:29:21 +01:00
mhmdanas
dc09a4621b Fix Gradle checksum 2021-11-26 10:50:07 +03:00
litetex
2f99a217c3 Fixed build 2021-11-23 20:21:59 +01:00
litetex
6992b2c308 Moved report_player_errors to debug 2021-11-23 20:16:01 +01:00
litetex
0d51eefbb9 Refactoring 2021-11-23 20:12:16 +01:00
litetex
aa28a85747 Added a workaround for not serializable exceptions 2021-11-23 20:12:14 +01:00
litetex
f18ee8e83d Added a bit more documentation 2021-11-23 20:12:13 +01:00
litetex
fb58967766 PlayerErrorHandler refactor + docs 2021-11-23 20:12:12 +01:00
litetex
c3f1478fde Support for debug option "Crash the player" on TVs 2021-11-23 20:12:11 +01:00
litetex
e5c00a7ef4 Added some doc 2021-11-23 20:12:10 +01:00
litetex
769791af7a Added a "Crash the player" debug option 2021-11-23 20:12:09 +01:00
litetex
e632fab4d0 Added option to report player errors
* Added a new setting so that player errors are reported (under Video and Audio > Player)
* Moved the player error logic to separate class specially created for this purpose
2021-11-23 20:12:07 +01:00
Stypox
6cd25d7e55 Merge pull request #7412 from litetex/code-cleanup
Some code cleanup(s)
2021-11-23 08:59:34 +01:00
litetex
c9488eb042 Removed useless lines 2021-11-22 19:49:52 +01:00
litetex
c8516a04dc Formatted code 2021-11-21 19:56:50 +01:00
litetex
02d1b98b1c Removed useless doc 2021-11-21 19:46:11 +01:00
litetex
d8236bbedd Merge pull request #7406 from Redirion/usedefaultloadcontrol
Use DefaultLoadcontrol
2021-11-21 15:11:21 +01:00
opusforlife2
1de21fb0c2 Merge pull request #7418 from TeamNewPipe/add-gradle-wrapper-Sha256
Add gradle wrapper Sha256
2021-11-21 08:25:55 +00:00
Robin
13cac07b8d Add gradle wrapper Sha256 2021-11-18 10:51:11 +01:00
XiangRongLin
bd9dcfb28a Merge pull request #7381 from litetex/prevent-automatic-replay-after-returning-from-background
Prevent automatic replay after returning from background
2021-11-17 09:38:09 +01:00
Robin
d5199eac3e Merge pull request #7050 from litetex/feed-refactor-new-items-handling
Rework feed new items handling
2021-11-15 23:20:07 +01:00
litetex
7638d229c0 Fixed typo 2021-11-15 20:24:40 +01:00
TacoTheDank
a641c5bb58 Update Groupie to 2.9.0 2021-11-15 20:24:39 +01:00
litetex
1e0c9f46ad Improved highlighting in FeedFragment
Now keeps the ``selectableItemBackground`` when highligthing an item.
2021-11-15 20:22:23 +01:00
litetex
4eb02f584e Fixed default visibility of "new feed items" button
Fixed/Avoid NPEs
2021-11-15 20:22:22 +01:00
litetex
700c1b4b25 Removed unnecessary layout
Moved the feed button up a bit
2021-11-15 20:22:21 +01:00
litetex
4b4337e078 Used more understandable kotlin methods 2021-11-15 20:22:20 +01:00
litetex
38ce800685 Fixed feed when animations are off
Introduced a check if corresponding animations on the devices are enabled
2021-11-15 20:22:20 +01:00
litetex
2310e8c1d6 Made `hideNewItemsLoaded` more null safe 2021-11-15 20:22:19 +01:00
litetex
1b2b3a4f88 Make new feed items bold 2021-11-15 20:22:18 +01:00
litetex
d11129a76b Fixed StackOverflow 2021-11-15 20:22:17 +01:00
litetex
02789122a0 Implemented UI highlighting and "new feed items"-notification
Fixed format
2021-11-15 20:22:17 +01:00
litetex
676bc02d52 No more reaction to unnecessary feed db-changes
This caused duplicate events (https://github.com/TeamNewPipe/NewPipe/pull/6686#issuecomment-909575283) and unnecessary processing of items
2021-11-15 20:21:23 +01:00
litetex
8b807b0706 Enhanced `View.slideUp` 2021-11-15 20:21:21 +01:00
Robin
72dfe974ab Merge pull request #7408 from Redirion/fixedautotransition2
Fixed Period Transition
2021-11-15 19:59:42 +01:00
litetex
316db0e4c6 setRecovery: Remove checks and use Math.min/max 2021-11-15 19:56:14 +01:00
litetex
010c607e40 Prevent automatic replay after returning from background
See also https://github.com/TeamNewPipe/NewPipe/pull/7195#issuecomment-962624380
2021-11-15 19:47:08 +01:00
Robin
3e099fb2a3 Fixed Period Transition 2021-11-14 21:19:36 +01:00
Robin
9c9730b152 Use DefaultLoadcontrol 2021-11-14 20:12:12 +01:00
Stypox
9e44053e22 Merge pull request #7160 from nschulzke/mark-as-watched-everywhere
Enable Mark as Watched in all the other playlist fragments.
2021-11-13 20:37:59 +01:00
Nathan Schulzke
dee32c3dc5 Factor out shouldAddMarkAsWatched as a shared function 2021-11-13 10:18:17 -07:00
Robin
344fbff59a Merge pull request #7363 from litetex/playback-speed-ctrls-simple-landscape-improvements
Simple playback-speed-controls improvements
2021-11-12 21:19:17 +01:00
litetex
e39a816bdc Merge pull request #5843 from TeamNewPipe/jcenter
Remove JCenter when possible
2021-11-12 20:53:29 +01:00
TobiGr
605b8fac5e Remove JCenter
All dependencies which were fetched from JCenter are now available via Maven Central. This source change is necessary becuase JCenter announced they werer going to be read-only starting at 31st March 2021 (https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter).
2021-11-12 20:38:50 +01:00
Robin
dfba10f8ae Merge pull request #7005 from Redirion/exo14
Update ExoPlayer to 2.14.2
2021-11-12 20:19:00 +01:00
litetex
48a1ab64b0 Refactored `PlaybackResolver`
* fixes the deprecation of ``setTag``
* makes the code more consistent
* de-duplicates some code
2021-11-12 20:14:39 +01:00
litetex
dd2cde3c1a De-duplicated PlayerDataSource-code 2021-11-12 19:40:00 +01:00
Robin
1b9c2b37c5 Use Android11+ extractors 2021-11-12 19:17:52 +01:00
Robin
eae1f8b597 Update ExoPlayer to 2.14.2 2021-11-12 19:17:51 +01:00
litetex
18ce86c2ed Merge pull request #7370 from iambaji/issue_7362
added show watched items toggle preference
2021-11-12 18:24:44 +01:00
litetex
d5f25e05d9 Merge pull request #7395 from litetex/gradle-replaced-with-with-using
Gradle: Replaced deprecated `with` with `using`
2021-11-12 18:17:41 +01:00
litetex
53303ac5d3 Replaced deprecated `with with using` 2021-11-11 20:17:54 +01:00
litetex
90cc8e2144 A feed settings-key better fits there 2021-11-11 19:49:46 +01:00
litetex
adf9badbf6 Fixed toggle not in sync with list after app restart + refactored the code a bit 2021-11-11 19:46:15 +01:00
Baji Shaik
c35fe4f3f1 moved preference key from viewmodel to settings_keys.xml 2021-11-10 16:16:17 -05:00
Baji Shaik
63291f8101 added show watched items toggle preference
default sharedpreference is used to persist and retrieve show watched menu option toggle state
2021-11-07 23:11:10 -05:00
litetex
62efb588ef Removed obvious title from the "Playback Speed Controls" 2021-11-07 13:51:43 +01:00
litetex
203ca9afc6 Removed unused imports 2021-11-06 21:07:00 +01:00
litetex
a23f941ac8 Simplified some code and added some comments 2021-11-05 19:07:56 +01:00
litetex
b0a10f0542 Merged extremely similar code together / parity between video and popup player
* Removed ``player.getPlayPauseButton().requestFocus();`` as there is no reason why it was introduced there documented
* Use the same delay to hide the controls on both players
2021-11-05 18:10:55 +01:00
litetex
478ad42977 De-Duplicated some code 2021-11-05 18:07:21 +01:00
litetex
0764983ac6 Why log double? 2021-11-05 18:06:32 +01:00
litetex
2b2f1ee8f5 Added some doc 2021-11-05 18:06:10 +01:00
litetex
28f167fd99 Removed dead code 2021-11-05 18:04:57 +01:00
litetex
272be36dd9 Removed `e.printStacktrace` and used an proper logger 2021-11-05 18:04:49 +01:00
litetex
f933db8117 Added a custom title
to also save some margin/padding/etc
2021-11-04 19:47:08 +01:00
litetex
cddb9bccb9 Reworked `dialog_playback_parameter`
* Removed dependency to @dimen/video_item_search_padding as it's unrelated
* Made the margins/paddings a bit smaller
* Put the checkboxes inside a layout
* Removed some useless attributes (maxLine)
2021-11-04 19:46:22 +01:00
litetex
b5ad24eb47 Merge pull request #7353 from B0pol/peertube-shortlinks
Support PeerTube short links
2021-11-04 16:31:16 +01:00
litetex
ad8f791f71 Changed extractor dependency back to TeamNewPipe
...as the required PR was merged.
2021-11-04 16:18:12 +01:00
litetex
2e862b4ccc Merge pull request #6844 from 0x416c6578/shuffle-mode-ui-fix
Fixed shuffle button opacity UI bug
2021-11-03 18:18:31 +01:00
litetex
ecac897e7b Fixed typo 2021-11-03 17:30:30 +01:00
bopol
702adb53a7 Support PeerTube short links 2021-11-03 14:49:17 +01:00
litetex
4ea962f523 Merge pull request #7348 from TiA4f8R/unrevert-pr6824
"Unrevert" changes from pull request 6824
2021-11-03 00:13:41 +01:00
TiA4f8R
acaf92d671 Unrevert PR 6824
PR 7061 reverted by mistake PR 6824 (it was a rebase issue). This commit unreverts this change and uses custom TextViews correctly in the file changed by PR 6824.
2021-11-02 17:53:27 +01:00
litetex
c673cb6157 Merge pull request #7304 from mhmdanas/add-y2ube-link-support
Add support for y2u.be links
2021-11-01 23:22:21 +01:00
litetex
c0f7b123a3 Merge pull request #7296 from vhouriet/vhouriet_feature_issue6049
Add "Check for updates" button in update settings
2021-11-01 23:17:25 +01:00
litetex
e9e2afa61a Merge pull request #7061 from TiA4f8R/custom-textview-edittext
Use custom TextViews and EditTexts in all XML resources
2021-10-27 20:47:15 +02:00
litetex
403154b2e1 Less indents and code -> better readable
Also removed a useless variable
2021-10-26 20:47:15 +02:00
litetex
e5fd24b0d1 Make naming great again
When we build APKs in PRs it's also a GITHUB_APK...
2021-10-26 20:47:14 +02:00
litetex
8dc34274a1 Removed dead code 2021-10-26 20:47:13 +02:00
litetex
467bd21de2 Cleanup up some code 2021-10-26 20:47:13 +02:00
vhouriet
5c9705d94e Change check for updates button to trigger a version check 2021-10-26 20:47:12 +02:00
vhouriet
85fb5827aa Add Check for updates button 2021-10-26 20:47:11 +02:00
litetex
0bcc9bd3ba Try to fix jitpack not resolving dependency 2021-10-26 19:07:54 +02:00
litetex
25e120bec1 Changed extractor dependency back to TeamNewPipe
...as the required PR was merged.
2021-10-26 18:47:48 +02:00
litetex
7067deb328 Merge pull request #7261 from TacoTheDank/bumpRecyclerView
Update RecyclerView & Groupie libraries
2021-10-24 21:22:04 +02:00
Mohammed Anas
f6efd302dc Fix extractor dependency 2021-10-23 20:30:04 +00:00
mhmdanas
61972141ae Add support for y2u.be links 2021-10-23 23:14:25 +03:00
litetex
af936bc646 Always create a backup list when shuffling
The backup-list has to be created at all cost (even when current list size <= 2). Otherwise it's not possible to enter shuffle-mode (as ``isShuffled()`` always returns false)!
2021-10-23 17:35:42 +02:00
litetex
d66f933c69 Fixing the shuffle button on the UI is enough.
No need for doing the heavier method ``onShuffleModeEnabledChanged(false);``
2021-10-23 16:46:56 +02:00
0x416c6578
cf81c37683 Removed changes to the intent handler 2021-10-23 16:43:29 +02:00
0x416c6578
d2306b0fd7 Fixed shuffle button opacity bug
Parameterised shuffle state into initPlayback for potentially passing the shuffle state into the player in the future
2021-10-23 16:43:28 +02:00
litetex
94dfabf3dc Merge pull request #7263 from TacoTheDank/moreBumps
Update some libraries
2021-10-22 18:19:01 +02:00
TobiGr
5522dc10b8 Merge branch 'master' into dev 2021-10-21 21:17:32 +02:00
Mohammed Anas
0ae04b8ead Merge pull request #7291 from TeamNewPipe/release/0.21.13
Release/0.21.13
2021-10-21 22:11:54 +03:00
Tobi
44cad27d0a Merge pull request #7268 from TeamNewPipe/release/0.21.13
Release 0.21.13
- Fix playback resume
- Ensure that the service for new version checks is not started in background
2021-10-21 20:51:01 +02:00
TobiGr
5d59025b3c Update changelog 2021-10-21 20:30:10 +02:00
TobiGr
768bb0bbcd Start service for update checks in onPastCreate() 2021-10-20 23:55:18 +02:00
Stypox
ac071b383f Revert part of #6872 and fix playback resuming 2021-10-20 23:20:26 +02:00
litetex
e0b1a6b88b Merge pull request #7149 from TacoTheDank/updateFragWorkaround
Update pager workaround code to Fragment 1.3.6
2021-10-20 19:44:35 +02:00
TacoTheDank
ed86b1c572 Update pager workaround to Fragment 1.3.6 2021-10-19 17:39:38 -04:00
TacoTheDank
b6c2bade73 Update AndroidX Media library 2021-10-19 17:36:36 -04:00
TacoTheDank
b6b19b474e Update RecyclerView & Groupie 2021-10-19 17:31:59 -04:00
litetex
231b7492fb Merge pull request #7265 from TacoTheDank/userVisibleHintBGone
Remove deprecated setUserVisibleHint
2021-10-18 20:02:33 +02:00
TacoTheDank
b4950fcb2e Clean up .gitignore files 2021-10-17 13:22:05 +02:00
TobiGr
b79ea7b51b NewPipe 0.21.13 (979) 2021-10-17 12:55:06 +02:00
TobiGr
28c72e7f63 Fix new version check still occassionally started in background 2021-10-17 12:55:06 +02:00
TobiGr
5fcc3b4dab [Player] Fix resuming playback
This was caused by #6872
2021-10-17 12:13:38 +02:00
TacoTheDank
51837ce36f Get rid of setUserVisibleHint 2021-10-16 15:33:45 -04:00
TiA4f8R
ddaafb68c8 Adress new requested changes 2021-10-16 15:32:56 +02:00
TiA4f8R
a744775fe7 Adress requested changes and remove an unused return value in NewPipeTextViewHelper 2021-10-16 13:41:05 +02:00
TiA4f8R
50b85a7734 Simplify code 2021-10-16 13:41:05 +02:00
TiA4f8R
aab09c0c65 Merge the Share process of the two classes into one
A new class has been added in the util package: NewPipeTextViewHelper.
It shares the selected text of a TextView with ShareUtils#shareText (with the created shareSelectedTextWithShareUtils static method).
Only this static method can be used by other classes, other methods are private.
2021-10-16 13:41:04 +02:00
TiA4f8R
3ded6feddb Improve code of created views
Use the same logic as Android TextViews
2021-10-16 13:41:04 +02:00
TiA4f8R
c8802fe5d0 Add JavaDocs on created views 2021-10-16 13:41:04 +02:00
TiA4f8R
411b3129f9 Use a custom EditText everywhere to be able to share with ShareUtils the selected text
This EditText class extends the AppCompatEditText class from androidx.

These changes (only in XML ressources) allow us to share the selected text by using ShareUtils.shareText, which opens the Android system chooser instead of the Huawei system chooser on EMUI devices.
2021-10-16 13:41:03 +02:00
TiA4f8R
a55acd38df Use a custom TextView everywhere to be able to share with ShareUtils the selected text
This TextView class extends the AppCompatTextView class from androidx.

These changes (only in XML ressources) allow us to share the selected text by using ShareUtils.shareText, which opens the Android system chooser instead of the Huawei system chooser on EMUI devices.
2021-10-16 13:40:54 +02:00
TacoTheDank
e7773d8807 Update plugins 2021-10-15 16:48:44 -04:00
litetex
7edef8d5a2 Merge pull request #7222 from ktprograms/queue-menu-channel-details
Added the 'Show Channel Details' menu item to the Queue long press menu
2021-10-15 20:28:18 +02:00
litetex
03d2ca9f9f Fixed format of code 2021-10-15 20:18:52 +02:00
litetex
2271ea4281 Improved documentation 2021-10-15 20:16:34 +02:00
ktprograms
afc8db8f81 Add reasoning for separate openChannelFragmentUsingIntent method 2021-10-14 09:51:25 +08:00
litetex
4af49ee5a6 Merge pull request #7194 from KalleStruik/add-to-playlist-in-share
Add a "add to playlist" option in the share menu
2021-10-13 20:34:07 +02:00
TobiGr
d7b29aae5c Merge branch 'master' into dev 2021-10-12 20:03:42 +02:00
litetex
9f7a8407ca Merge pull request #7224 from vhouriet/vhouriet_fix_check-background-player-type
Check if background player already active before displaying player toast
2021-10-12 19:47:50 +02:00
Tobi
7eb13a9b93 Merge pull request #7232 from TeamNewPipe/release/0.21.12
Fix check for new Version and release 0.21.12
2021-10-12 19:15:19 +02:00
TobiGr
7c9896beaf Release NewPipe 0.21.12 (978) 2021-10-12 16:45:01 +02:00
TobiGr
54d3bff26d Move checking for new version to MainAcitvity
When the service is started from the Application class, the app might be still in the background. This is definetly not the case when MainActivity.onCreate() is called.

Fixes #7227
2021-10-12 16:45:01 +02:00
litetex
a2050a5211 Merge pull request #7215 from litetex/code-cleanup-drawer-main-activity
Deduplicated drawer code in MainActivity
2021-10-11 21:29:42 +02:00
litetex
048743c062 Merge pull request #7148 from TacoTheDank/androidxMediaBump
Update AndroidX Media library to 1.4.x
2021-10-11 21:28:49 +02:00
litetex
e9bd2934c3 Merge pull request #7202 from vhouriet/vhouriet_bug_issue-6662
Fix clicking timestamp shows Toast "Playing in popup mode"
2021-10-11 21:20:26 +02:00
vhouriet
50634eb2b3 Check player type before displaying background player toast 2021-10-11 19:41:22 +02:00
Tobi
08489b81fb Merge pull request #7220 from TeamNewPipe/code-improvements
Simplify code and add annotations
2021-10-11 16:36:13 +02:00
ktprograms
a2ff770afc Added the 'Show Channel Details' menu item to the Queue long press menu
Created a method in NavigationHelper that opens the channel fragment using an Intent to MainActivity instead of replacing fragments.
2021-10-11 14:47:37 +08:00
Tobi
e0ba9b3902 Merge pull request #7192 from TeamNewPipe/release/0.21.11
Release/0.21.11
2021-10-10 21:03:38 +02:00
TobiGr
f11b5ae7a1 Release NewPipep 0.21.11 (977) 2021-10-10 20:52:38 +02:00
Hosted Weblate
7baeb6eca7 Translated using Weblate (Indonesian)
Currently translated at 98.8% (614 of 621 strings)

Translated using Weblate (Persian)

Currently translated at 17.2% (10 of 58 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Ukrainian)

Currently translated at 79.3% (46 of 58 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (58 of 58 strings)

Translated using Weblate (Polish)

Currently translated at 53.4% (31 of 58 strings)

Translated using Weblate (Hebrew)

Currently translated at 48.2% (28 of 58 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: MS-PC <MSPCtranslator@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: zmni <zmni@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-10-10 20:51:58 +02:00
TobiGr
658d988254 Simplify code and add annotations 2021-10-10 20:33:05 +02:00
Kalle Struik
9d7e9289bb Fix cursor color in PlaylistCreationDialog 2021-10-10 12:32:57 +02:00
Tobi
4e8519a1b9 Merge pull request #7213 from Redirion/npefix
Fix crash on missing title when sharing livestream
2021-10-09 23:35:50 +02:00
litetex
12aac09c7b Fixed typo 2021-10-09 18:56:10 +02:00
litetex
d7d87691cb Add to playlist - Showing toast that this may take a moment 2021-10-09 18:47:36 +02:00
litetex
731640997e Cleaned up PlaylistDialog-related code 2021-10-09 18:46:20 +02:00
litetex
64d7432852 Deduplicated drawer code in MainActivity 2021-10-09 16:37:34 +02:00
Robin
e6fffc0d5b Fix crash on missing title when sharing livestream 2021-10-08 21:42:01 +02:00
vhouriet
1c9f68bcae Fix clicking timestamp shows Toast "Playing in popup mode"
Fixes #6662
2021-10-05 18:15:36 +02:00
Kalle Struik
4fde62ff89 Reorder preferred open action menu 2021-10-04 21:23:56 +02:00
XiangRongLin
4c5fc7fa7c Merge pull request #7196 from litetex/use-correct-tag-NavigationHelper
Use the correct TAG in NavigationHelper
2021-10-04 08:40:41 +02:00
litetex
b633108a4c Use the correct TAG in NavigationHelper 2021-10-03 22:04:34 +02:00
Kalle Struik
ceb55d0ede Set the theme for PlaylistCreationDialog explicitly. 2021-10-03 14:25:50 +02:00
Kalle Struik
87c958b2e7 Rename the "append_playlist" string to "add_to_playlist" 2021-10-03 13:27:24 +02:00
Kalle Struik
d844e0aba6 Add a add to playlist option in the share menu. 2021-10-02 19:21:25 +02:00
Tobi
3d42da5ff5 Merge pull request #6642 from magicbrothers/add-eduvid
Add Tubus (Invidious) and EduVid (PeerTube)
2021-10-02 18:32:00 +02:00
TobiGr
1b869199f4 Update extractor to 0.21.11 2021-10-02 18:25:26 +02:00
CloverBadland
f3cd2f6c9d Update README.es.md (#7188) 2021-10-02 15:56:12 +00:00
opusforlife2
2e3e7f9bf2 Drastically simplify Feature Request template (#7165)
Making the experience of filling it out as hassle-free as possible would ensure fewer users ignore/misread the template.
2021-10-02 12:17:14 +03:00
TobiGr
92327dd9e3 Add changelog for NewPIpe 0.21.11 (977) 2021-10-02 10:17:57 +02:00
Hosted Weblate
d40b432f46 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (French)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Korean)

Currently translated at 73.7% (458 of 621 strings)

Translated using Weblate (French)

Currently translated at 66.6% (38 of 57 strings)

Translated using Weblate (Ukrainian)

Currently translated at 78.9% (45 of 57 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (French)

Currently translated at 99.8% (620 of 621 strings)

Translated using Weblate (Ukrainian)

Currently translated at 78.9% (45 of 57 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.8% (620 of 621 strings)

Translated using Weblate (Hungarian)

Currently translated at 0.0% (0 of 57 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Croatian)

Currently translated at 97.7% (607 of 621 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (German)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Turkish)

Currently translated at 99.6% (619 of 621 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (621 of 621 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Andrij Mizyk <andmizyk@gmail.com>
Co-authored-by: Boros Zsombor <zsombor2626@gmail.com>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: Eduardo Caron <eduardocaron10@gmail.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Krysa Czech <krysaczek@gmail.com>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: San Kang <devrivmt@gmail.com>
Co-authored-by: Sergio Varela <sergitroll9@gmail.com>
Co-authored-by: Sérgio Marques <smarquespt@gmail.com>
Co-authored-by: Terry Louwers <t.louwers@gmail.com>
Co-authored-by: ToldYouThat <itoldyouthat@protonmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: translator <yasinoc375@advew.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translation: NewPipe/Metadata
2021-10-02 09:50:04 +02:00
Tobi
5b3137093f Merge pull request #6824 from phigjm/player_queue_control_rearrangement
Swap seekbar position with player buttons in Queue screen
2021-10-02 09:47:25 +02:00
Tobi
4fc9f2e5fd Merge pull request #7176 from litetex/fix-progress-bar-end-not-synced
Fixed seekbar not completed after video end
2021-10-02 09:24:59 +02:00
Tobi
ce592f4baf Merge pull request #6980 from bravenewpipe/check-for-update-after-toggle-and-restart
resets the expire date for checking for updates
2021-10-02 09:07:05 +02:00
Tobi
2b3edcf2d1 Add a comment 2021-10-02 08:53:03 +02:00
ygz213
f165f97bd9 Update READMEs
* Change "Github" as "GitHub"
* Change translation of "Screenshots" with its more common translation (README.tr.md)
2021-10-02 08:38:57 +02:00
litetex
4ec572372e Merge pull request #7177 from tsiflimagas/minimized-player-buttons-clickable-area
Expand minimized player buttons clickable area
2021-10-01 18:05:59 +02:00
TacoTheDank
a953aab9b4 Update AndroidX Media to 1.4.x 2021-09-30 15:33:20 -04:00
litetex
672eb34049 Merge pull request #7150 from TacoTheDank/groupieBump
Update Groupie library to 2.9.0
2021-09-30 21:26:58 +02:00
Mohammed Anas
a0b042091b Add YouTube shorts path prefix to intent filter (#7181)
* Add YouTube shorts path prefix to intent filter
2021-09-29 21:44:47 +02:00
Tobi
b753705a84 Merge pull request #7178 from Redirion/dsblmdtnnelrealtekatv
Disable media tunneling on RealtekATV
2021-09-28 07:53:11 +02:00
Robin
f48ff610a3 Merge pull request #7166 from litetex/various-fixes-for-mediasession-player
Various fixes related to MediasessionManager
2021-09-27 23:45:38 +02:00
Robin
93aed9f34c Merge pull request #7169 from laksh-21/fixSettingsImport
Fix Settings import
2021-09-27 23:42:54 +02:00
Robin
3cf94382e6 Disable media tunneling on RealtekATV 2021-09-27 13:21:04 +02:00
Laksh
f52cb3bbe0 Make requested changes 2021-09-27 01:45:33 +05:30
litetex
d45182cb5c Referenced issue in code 2021-09-26 20:58:49 +02:00
litetex
22847c6c92 Fixed progress bar not completing after video end 2021-09-26 20:50:24 +02:00
Kostas Giapis
a70c51b71c Remove margins from minimized player buttons 2021-09-26 18:26:40 +03:00
Kostas Giapis
02d417476e Increase minimized player buttons clickable area 2021-09-26 18:23:11 +03:00
Laksh
bc3139e5f9 Fix Settings import 2021-09-25 15:37:07 +05:30
litetex
c1f7b2653c Merge pull request #7152 from TacoTheDank/regenDrawables
Regenerate some drawables to their latest design
2021-09-25 10:33:21 +02:00
litetex
72dbb9441e Improved streamType check and documentation 2021-09-25 10:31:42 +02:00
litetex
bbc13756f3 Removed useless check for livestreams 2021-09-25 00:04:53 +02:00
litetex
ba0876b43b Reformatted MediaSessionManager code 2021-09-24 23:55:06 +02:00
litetex
c0d41661e8 Fixed performance problems with mediaSessionManager
* Built on top of Redirons changes
* MediaSessionManager-Metadata get's only update when metadata changes - not every second as it only changes when the metadata changes
* Reworked mediasessionmanager
2021-09-24 23:40:12 +02:00
Robin
b2e2551e33 Two fixes for setMetadata 2021-09-24 23:28:55 +02:00
Robin
ac371e6fb4 Merge pull request #7156 from TacoTheDank/removeDeprecatedPrefTheme
Remove deprecated preferenceTheme style attribute
2021-09-24 22:36:15 +02:00
Nathan Schulzke
108af48b76 Enable Mark as Watched in all the other playlist fragments. 2021-09-23 21:39:47 -06:00
TacoTheDank
a225ac5deb Remove deprecated preferenceTheme style attribute 2021-09-23 15:09:37 -04:00
TacoTheDank
920695f90a Regenerate some drawables to their latest design 2021-09-22 23:38:01 -04:00
TacoTheDank
49fc57eee9 Remove unused drawables 2021-09-22 21:54:30 -04:00
TacoTheDank
b61d44aaa6 Update Groupie to 2.9.0 2021-09-22 19:08:03 -04:00
Jhon Baron
f36fd2f7b2 Simple Codebase Improvement (#7132)
* feat: it was added a string variable to avoid replication one.

* Update LocalPlaylistManagerTest.kt

* Update LocalPlaylistManagerTest.kt

* Update LocalPlaylistManagerTest.kt

Co-authored-by: Jhon Camilo Baron Berdugo <jbaron@mutualser.org>
2021-09-22 09:17:53 +02:00
Stypox
7e26748dc4 Merge branch 'master' into dev 2021-09-19 22:37:00 +02:00
Tobi
ba6fdecbae Merge pull request #7063 from TeamNewPipe/release/0.21.10
Release 0.21.10
2021-09-19 20:59:54 +02:00
Hosted Weblate
f791e83380 Translated using Weblate (Lithuanian)
Currently translated at 10.5% (6 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (French)

Currently translated at 99.8% (620 of 621 strings)

Translated using Weblate (German)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Romanian)

Currently translated at 89.9% (557 of 619 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (618 of 619 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Javanese)

Currently translated at 10.5% (6 of 57 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Javanese)

Currently translated at 9.8% (61 of 619 strings)

Translated using Weblate (Nepali)

Currently translated at 77.8% (482 of 619 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ahmad Firdaus <rin.hikaru@gmail.com>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Prajwol Pradhan <076bei023.prajwol@pcampus.edu.np>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/jv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/lt/
Translation: NewPipe/Metadata
2021-09-19 20:35:19 +02:00
Hosted Weblate
dd7f914b8d Translated using Weblate (Lithuanian)
Currently translated at 10.5% (6 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (French)

Currently translated at 99.8% (620 of 621 strings)

Translated using Weblate (German)

Currently translated at 100.0% (621 of 621 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Romanian)

Currently translated at 89.9% (557 of 619 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (618 of 619 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Javanese)

Currently translated at 10.5% (6 of 57 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Javanese)

Currently translated at 9.8% (61 of 619 strings)

Translated using Weblate (Nepali)

Currently translated at 77.8% (482 of 619 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ahmad Firdaus <rin.hikaru@gmail.com>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Prajwol Pradhan <076bei023.prajwol@pcampus.edu.np>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/jv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/lt/
Translation: NewPipe/Metadata
2021-09-19 20:31:36 +02:00
Stypox
7667b2ce59 Fix restoring orientation in onBack 2021-09-19 19:09:11 +02:00
Stypox
8272b2508b Make all buttons in player have selectable item background borderless (#7042)
Except buttons with long text or text that changes on click
2021-09-18 11:29:15 +02:00
z3r0r4
70354eb73e Add play next to long press menu & refactor enqueue methods (#6872)
* added mvp play next button in long press menu; new intent handling, new long press dialog entry, new dialog functions, new strings

* changed line length for checkstyle pass

* cleaned comments, moved strings

* Update app/src/main/res/values/strings.xml

to make long press entry more descriptive

Co-authored-by: opusforlife2 <53176348+opusforlife2@users.noreply.github.com>

* Update app/src/main/res/values/strings.xml

Co-authored-by: Stypox <stypox@pm.me>

* replace redundant nextOnVideoPlayer methods

Co-authored-by: Stypox <stypox@pm.me>

* add enqueueNextOnPlayer and enqueueOnPlayer without selectOnAppend and RESUME_PLAYBACK/ deprecate enqueueNextOn*Player and enqueueOn*Player methods
add getPlayerIntent, getPlayerEnqueueIntent and getPlayerEnqueueNextIntent without selectOnAppend and RESUME_PLAYBACK/ deprecate those with
add section comments

* removed deprecated methods
removed redundant methods

* removed deprecated methods
removed redundant methods

* replaced APPEND_ONLY, removed SELECT_ON_APPEND / replaced remaining enqueueOn*Player methods

* now works with playlists

* renamed dialog entry

* checking for >1 items in the queue using the PlayerHolder

* making enqueue*OnPlayer safe to call when no video is playing (defaulting to audio)

* corrected strings

* improve getQueueSize in PlayerHolder

* long press to enqueue only if queue isnt empty

* add Whitespace

Co-authored-by: Stypox <stypox@pm.me>

* clarify comments / add spaces

* PlayerType as parameter of the enqueueOnPlayer method
add Helper method

* using the helper function everywhere (except for the background and popup long-press actions (also on playlists, history, ...)), so basically nowhere
/ passing checkstyle

* assimilated the enqueue*OnPlayer methods

* removed redundant comment, variable

* simplify code line

Co-authored-by: Stypox <stypox@pm.me>

* move if

* replace workaround for isPlayerOpen()

Co-authored-by: Stypox <stypox@pm.me>

* replaced workarounds (getType), corrected static access with getInstance

* remove unused imports

* changed method call to original, new method doesnt exist yet.

* Use getter method instead of property access syntax.

* improve conditional for play next entry

Co-authored-by: Stypox <stypox@pm.me>

* show play next btn in feed fragment

Co-authored-by: Stypox <stypox@pm.me>

* add play next to local playlist and statistics fragment

Co-authored-by: Stypox <stypox@pm.me>

* formating

Co-authored-by: Stypox <stypox@pm.me>

* correcting logic

Co-authored-by: Stypox <stypox@pm.me>

* remove 2 year old unused string, formating

Co-authored-by: Stypox <stypox@pm.me>

* correct enqueue (next) conditionals, default to background if no player is open. Dont generally default to background play.

* remove player open checks from button long press enqueue actions

* improve log msg

* Rename next to enqueue_next

* Refactor kotlin

Co-authored-by: opusforlife2 <53176348+opusforlife2@users.noreply.github.com>
Co-authored-by: Stypox <stypox@pm.me>
2021-09-18 11:22:49 +02:00
XiangRongLin
63083ac0c3 Merge pull request #7098 from XiangRongLin/6420_package_suffix
Allow passing in package suffix for release builds through CLI param
2021-09-18 11:10:42 +02:00
TobiGr
9346f9b0f3 Update extractor version to 0.21.10 2021-09-13 16:47:40 +02:00
TobiGr
605e5d265c Fix syntax 2021-09-13 14:02:08 +02:00
TobiGr
25456b15e7 Fix duplicate dashes in string resource 2021-09-13 14:01:52 +02:00
TobiGr
ebbe7ef944 Fix Chinese plurals 2021-09-13 14:01:17 +02:00
Hosted Weblate
60a272e70a Translated using Weblate (Spanish)
Currently translated at 56.1% (32 of 57 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.8% (618 of 619 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (616 of 619 strings)

Translated using Weblate (Ukrainian)

Currently translated at 77.1% (44 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Galician)

Currently translated at 94.9% (588 of 619 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Slovak)

Currently translated at 96.2% (596 of 619 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (French)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (German)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (English)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Polish)

Currently translated at 52.6% (30 of 57 strings)

Translated using Weblate (Hebrew)

Currently translated at 47.3% (27 of 57 strings)

Translated using Weblate (Ukrainian)

Currently translated at 61.4% (35 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.6% (617 of 619 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (57 of 57 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Persian)

Currently translated at 15.7% (9 of 57 strings)

Translated using Weblate (Ukrainian)

Currently translated at 54.3% (31 of 57 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jakub <online.reg1@pm.me>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-09-13 14:01:12 +02:00
TobiGr
672fcb9ce3 Fix syntax 2021-09-13 13:54:32 +02:00
TobiGr
870d50ebcd Fix duplicate dashes in string resource 2021-09-13 13:52:58 +02:00
TobiGr
b62b3e91a0 Fix Chinese plurals 2021-09-13 13:52:33 +02:00
Hosted Weblate
b022d90303 Translated using Weblate (Spanish)
Currently translated at 56.1% (32 of 57 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.8% (618 of 619 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (616 of 619 strings)

Translated using Weblate (Ukrainian)

Currently translated at 77.1% (44 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Galician)

Currently translated at 94.9% (588 of 619 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Slovak)

Currently translated at 96.2% (596 of 619 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (French)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (German)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (English)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Polish)

Currently translated at 52.6% (30 of 57 strings)

Translated using Weblate (Hebrew)

Currently translated at 47.3% (27 of 57 strings)

Translated using Weblate (Ukrainian)

Currently translated at 61.4% (35 of 57 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.6% (617 of 619 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (57 of 57 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Persian)

Currently translated at 15.7% (9 of 57 strings)

Translated using Weblate (Ukrainian)

Currently translated at 54.3% (31 of 57 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (619 of 619 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (619 of 619 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jakub <online.reg1@pm.me>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-09-13 13:29:04 +02:00
Tobi
02af529551 Merge pull request #6974 from litetex/update-android-build-tools-gradle
Update Android Gradle Plugin to version 7.0.2
2021-09-13 13:13:57 +02:00
XiangRongLin
dd9cc619ed Add documentation for the custom gradle parameters 2021-09-12 20:43:28 +02:00
XiangRongLin
75c9e959de Allow passing in package suffix for release builds through CLI param 2021-09-12 20:19:45 +02:00
litetex
fb8afec1bf Updated `com.android.tools.build:gradle to 7.0.2` 2021-09-12 14:54:40 +02:00
Tobi
a2887034a6 Merge pull request #7068 from litetex/fix-restart
Fixed restarting not working properly
2021-09-11 12:51:38 +02:00
Tobi
7eb5aa1bc5 Merge pull request #7056 from TeamNewPipe/fix/playOnPopup
Fix handling exception in `playOnPopup` and toggle description tab
2021-09-10 18:21:41 +02:00
Tobi
08ebd7d39a Merge pull request #7085 from litetex/fix-splash-screen-navbar-color
Fixed the navbar color for darkmode
2021-09-09 22:35:51 +02:00
litetex
9ea263f72e Fixed the navbar color for darkmode 2021-09-09 21:39:40 +02:00
Tobi
e4a2d2f3c1 Merge pull request #7071 from thefalsedev/cpufix-1
Change player progress bar update from 500 ms to 1 s
2021-09-09 13:37:44 +02:00
thefalsedev
892b4a15f6 Change player progress bar update from 500 ms to 1 s
Just like in the issue 7062, https://github.com/TeamNewPipe/NewPipe/issues/7062, this doesn't affect UI as it updates every one second anyway, but reduces very heavy android widget progress bar high cpu usage. With every 500s there is 6% cpu usage and with 1s only 4%. However further changes will have to be made to disable updating of player progress bar when screen is off to further reduce power consumption. With this, total power savings would be 20% in mAh consumption.
2021-09-07 00:04:05 +02:00
litetex
fda0a550fd Fixed the app restarting not working properly
* Using [``process-phoenix``](https://github.com/JakeWharton/ProcessPhoenix)
2021-09-06 20:47:44 +02:00
TobiGr
638825cdff Release NewPipe 0.21.10 (976) 2021-09-05 21:47:28 +02:00
TobiGr
6a1d81fcf3 Add changelog for NewPipe 0.21.10 (976) 2021-09-05 21:47:19 +02:00
TobiGr
8afd44a72f Update extractor version 2021-09-05 21:31:39 +02:00
Tobi
22c5135740 Merge pull request #7055 from sauravrao637/7048
Added night variant for splash_background.xml
2021-09-05 20:42:32 +02:00
TobiGr
4d51ebc37a Fix a few SonarLint warnings 2021-09-05 19:54:28 +02:00
TobiGr
433c6dc33b Fix OnErrorNotImplementedException in SearchFragment.initSuggestionObserver()
Hopefully also fix the cause of the original error.
2021-09-05 19:54:28 +02:00
TobiGr
ed4fdadd4d Fix OnErrorNotImplementedException in playOnPopup 2021-09-05 19:54:28 +02:00
TobiGr
298e96b821 Fix updating the wrong tabs when changing settings while running the minimized player in VideoDetailFragment
The comments tab was updated although the settings for the description tab were changed.
2021-09-04 22:36:47 +02:00
TobiGr
9006667b4d Merge remote-tracking branch 'origin/dev' into dev 2021-09-04 21:23:50 +02:00
Allan Nordhøy
abbf71982d Translated using Weblate (Norwegian Bokmål)
Currently translated at 97.0% (665 of 685 strings)
2021-09-04 20:57:35 +02:00
Joel A
57110717d3 Translated using Weblate (Swedish)
Currently translated at 98.8% (677 of 685 strings)
2021-09-04 20:57:35 +02:00
Yaron Shahrabani
c3b5444281 Translated using Weblate (Hebrew)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:35 +02:00
chr56
7a542975ca Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:34 +02:00
Danial Behzadi
490aff5846 Translated using Weblate (Persian)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:34 +02:00
Agnieszka C
1dfc036ead Translated using Weblate (Polish)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:34 +02:00
Oğuz Ersen
360d6b998c Translated using Weblate (Turkish)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:34 +02:00
Ihor Hordiichuk
be7307cf39 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:33 +02:00
bomzhellino
12096ab050 Translated using Weblate (Russian)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:33 +02:00
Ldm Public
225f23ce02 Translated using Weblate (French)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:33 +02:00
nautilusx
9c15ee7285 Translated using Weblate (German)
Currently translated at 100.0% (685 of 685 strings)
2021-09-04 20:57:32 +02:00
Tobi
8dd617fc6b Merge pull request #7043 from Stypox/optimize-resources
Remove unused resources
2021-09-04 20:57:07 +02:00
camo0112
ae8e72f34b added night variant for splash_background.xml 2021-09-04 15:55:31 +05:30
litetex
fc52a6e871 Merge branch 'dev' into update-android-build-tools-gradle 2021-09-03 23:18:16 +02:00
Hosted Weblate
722b47b86f Translated using Weblate (Persian)
Currently translated at 12.5% (7 of 56 strings)

Translated using Weblate (Spanish)

Currently translated at 55.3% (31 of 56 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Lithuanian)

Currently translated at 99.8% (682 of 683 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Arabic)

Currently translated at 99.7% (681 of 683 strings)

Translated using Weblate (Greek)

Currently translated at 99.8% (682 of 683 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Japanese)

Currently translated at 99.1% (677 of 683 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (French)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (French)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (German)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Galician)

Currently translated at 95.9% (655 of 683 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 97.0% (663 of 683 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Persian)

Currently translated at 10.7% (6 of 56 strings)

Translated using Weblate (French)

Currently translated at 66.0% (37 of 56 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 97.0% (663 of 683 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (French)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (German)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (French)

Currently translated at 100.0% (683 of 683 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Andrij Mizyk <andmizyk@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Sergio Varela <sergitroll9@gmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: translator <yasinoc375@advew.com>
Co-authored-by: zeritti <woodenmo@posteo.de>
Co-authored-by: Éfrit <efrit@posteo.net>
Co-authored-by: Óscar Fernández Díaz <oscfdezdz@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translation: NewPipe/Metadata
2021-09-03 15:59:03 +02:00
Stypox
3a09039b93 Remove unused resources 2021-09-02 21:13:54 +02:00
evermind
669a35bc78 check immediately for updates if user enables 'check for updates setting'
- Convert CheckForNewAppVersion to IntentService
- reset expire date to 0 after user enables check for updates setting
2021-09-02 07:20:35 +02:00
Tobi
81fa0c1558 Merge pull request #5459 from Stypox/fullscreen-autoplay
Add option to directly open fullscreen when the main player starts
2021-09-01 23:01:09 +02:00
Stypox
ed408b2094 Move fullscreen-related comments to javadocs 2021-09-01 20:13:27 +02:00
Stypox
3bc661f583 Fix null pointer exception in player initialization 2021-09-01 20:13:27 +02:00
Stypox
cf9b482be2 Completely close player when changing stream w/o autoplay 2021-09-01 20:13:27 +02:00
Stypox
1d935b46f9 Open fullscreen when switching from popup to main player 2021-09-01 20:13:24 +02:00
Stypox
520ac2e935 Fix bottom sheet state after automatic fullscreen 2021-09-01 20:12:14 +02:00
Stypox
c6316abbce Fix opening directly fullscreen on tablets 2021-09-01 20:12:09 +02:00
Stypox
2dfe837c35 Extract isLandscape and isInMultiWindow to DeviceUtils 2021-09-01 20:09:08 +02:00
Stypox
3c2ea7697c Add option to directly open fullscreen when the main player starts 2021-09-01 20:08:37 +02:00
Stypox
faa7a91764 Merge pull request #7004 from litetex/fix-showTextError-and-rework-ErrorPanel
Reworked the ErrorPanel
2021-08-31 18:26:51 +02:00
Robin
f629a4d206 Merge pull request #6993 from Redirion/closeaudioeffectsession
Close audio effect control session properly
2021-08-31 12:37:20 +02:00
Stypox
4b7c37e919 Merge pull request #6955 from ktprograms/queue-long-press-menu
Show popup menu when long pressing in play queue (Full screen player)
2021-08-31 12:22:59 +02:00
Stypox
a4c9732916 Merge pull request #6965 from ktprograms/indication-content-main-page
Add how to remove tab from main page text
2021-08-31 12:12:33 +02:00
Stypox
f8f2dfce4b Merge pull request #6882 from talanc/dev
Add support for CSV+ZIP subscriptions (Google Takeout)
2021-08-31 12:10:12 +02:00
Stypox
5284072b8d Improve mime type deduction on subscription import 2021-08-31 12:07:34 +02:00
talanc
e603dddc54 Added support for CSV+ZIP subscriptions
Updated import instructions string
2021-08-31 12:07:34 +02:00
Stypox
15691ba41a Merge pull request #7002 from litetex/gh-actions-use-integrated-cache-setup-java
Using integrated cache in ``actions/setup-java``
2021-08-31 12:01:26 +02:00
Stypox
a555aab3e7 Merge pull request #7024 from Stypox/string-fixes
Never use ``android.R.string``s; remove unused ``add`` string
2021-08-31 12:00:07 +02:00
Stypox
88f1c3a808 Merge pull request #6985 from litetex/set-seekbarjump-when-using-dpad-to-seek-duration-from-preferences
Set ``KeyProgressIncrement`` manually / Fix long seekbar jumps when using a DPad
2021-08-30 23:36:29 +02:00
Tobi
0e6668636d Merge pull request #6986 from litetex/fix-build-problems-update-kotlin
Fix build problems and updated kotlin
2021-08-30 21:20:45 +02:00
Stypox
d0f4d8b132 Remove unused string "add": "New mission" 2021-08-30 16:37:01 +02:00
Stypox
cfdcb92fa3 Always use our strings, not android ones 2021-08-30 16:37:01 +02:00
Stypox
039bd5d413 Rename string finish to ok, as its content was "OK" 2021-08-30 16:36:57 +02:00
Stypox
5ffba55b4a Merge pull request #6990 from CBSkarmory/dev
fix typo / reword part of bug report template
2021-08-30 15:51:47 +02:00
Robin
57ca281c80 Merge pull request #6634 from Isira-Seneviratne/Use_PackageInfoCompat
Use PackageInfoCompat.getSignatures().
2021-08-29 23:13:12 +02:00
Tobi
46f74b908a Merge pull request #7014 from litetex/fix-double-tapping-replay-button
Fixed double tapping the replay button
2021-08-29 18:43:28 +02:00
litetex
703f1550d8 Fixed double tapping the replay button 2021-08-29 17:53:09 +02:00
Robin
8bfd380b89 Merge pull request #6515 from Redirion/buffersharmonization
Use ExoPlayer default values for buffers
2021-08-29 17:44:43 +02:00
Agnieszka C
43e91ae4ae Added plural forms for download related strings (#6930)
Co-authored-by: Tobi <TobiGr@users.noreply.github.com>
2021-08-29 13:28:01 +02:00
Hosted Weblate
023a2c1d9c Translated using Weblate (German)
Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Malay)

Currently translated at 67.8% (464 of 684 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Korean)

Currently translated at 75.5% (517 of 684 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Malay)

Currently translated at 67.3% (461 of 684 strings)

Translated using Weblate (Malay)

Currently translated at 67.3% (461 of 684 strings)

Translated using Weblate (Swedish)

Currently translated at 99.1% (678 of 684 strings)

Translated using Weblate (Japanese)

Currently translated at 99.5% (681 of 684 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Malayalam)

Currently translated at 7.1% (4 of 56 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Malayalam)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Catalan)

Currently translated at 98.5% (674 of 684 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (French)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (German)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Lithuanian)

Currently translated at 10.7% (6 of 56 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (French)

Currently translated at 99.8% (683 of 684 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Vietnamese)

Currently translated at 39.2% (22 of 56 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Finnish)

Currently translated at 12.5% (7 of 56 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Bruno Guerreiro <american.jesus.pt@gmail.com>
Co-authored-by: Dayongdo <dayongdo@protonmail.ch>
Co-authored-by: Deleted User <noreply+23276@weblate.org>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>
Co-authored-by: Karl Tammik <karltammik@protonmail.com>
Co-authored-by: Lavin Tom K Abraham <lavintom007@gmail.com>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Lim Jia Ming <jiaminglimjm@protonmail.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Nadir Nour <dudethatwascool2@gmail.com>
Co-authored-by: Oğuz Ersen <oguzersen@protonmail.com>
Co-authored-by: Rehaz Feddit <rehafa8425@fxseller.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Terry Louwers <t.louwers@gmail.com>
Co-authored-by: Thien Bui <thien.bui.84436@gmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: tch69 <ifa26417@outlook.com.vn>
Co-authored-by: Éfrit <efrit@posteo.net>
Co-authored-by: Óscar Fernández Díaz <oscfdezdz@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/lt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ml/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/
Translation: NewPipe/Metadata
2021-08-29 13:15:02 +02:00
litetex
d931d058d9 Reworked the ErrorPanel
* All element on the error panel are now hidden by default (expect for the ``errorTextView``) as they are only optional shown
  * Added a method to ensure the above
  * This deduplicates a lot of code
* Fixed format of some LoC
* Added new method: ``showAndSetErrorButtonAction``
* Fixed  ``showTextError``
* Named buttons more logically: ``errorButtonAction`` -> ``errorActionButton``
2021-08-28 17:05:12 +02:00
litetex
a825253b7f Using integrated cache in `actions/setup-java`
https://github.com/actions/setup-java#caching-gradle-dependencies
2021-08-28 15:22:04 +02:00
acti0
d9086300f3 Re-add sharing of the content name with the "Share" command (#6957)
The title of the content is re-added as the EXTRA_SUBJECT of the share intent.
2021-08-27 19:26:32 +02:00
litetex
f18a7c91ca Suppressed warning
There seems to be a bug in the kotlin plugin as it tells you when building that this can't be null:
"Condition 'throwable != null' is always 'true'"
However it can indeed be null as seen in https://github.com/TeamNewPipe/NewPipe/pull/6986#issuecomment-906822218
2021-08-27 16:32:59 +02:00
Robin
556aad0114 Merge pull request #6995 from litetex/use-eclipse-temurin-in-gh-actions
Using Eclipse ``temurin`` in GH actions
2021-08-27 15:59:57 +02:00
litetex
05f6ea6401 Using Eclipse `temurin`
as AdoptOpenJDK is getting deprecated.

Eclipse ``temurin`` is a defacto renamed AdoptOpenJDK.

Ref:
* https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/
* https://github.com/actions/setup-java#supported-distributions
2021-08-27 15:21:48 +02:00
Robin
43d0543b9f close audio effect control session properly 2021-08-27 10:53:44 +02:00
ktprograms
e95637f7b7 Add help text in fragment_choose_tabs.xml, convert to ConstraintLayout 2021-08-27 09:20:23 +08:00
George T
4cd7c42b9e fix typo / reword part of bug report template 2021-08-26 19:02:50 -05:00
Tobi
0787d62254 Merge pull request #6820 from Stypox/picker-mime-type
Provide mime type to file picker to gray out unselectable files
2021-08-26 21:39:35 +02:00
litetex
b061423847 Changed package as the old one is deprecated 2021-08-26 18:09:27 +02:00
litetex
dbd90299bd Replaced deprecated `kotlin-android-extensions with kotlin-parcelize`
References:
* https://developer.android.com/topic/libraries/view-binding/migration#groovy
* https://developer.android.com/kotlin/parcelize#groovy
2021-08-26 18:08:54 +02:00
litetex
1faf1b261c Updated to latest kotlin version 2021-08-26 18:08:00 +02:00
litetex
c6ead351c0 Set `KeyProgressIncrement` manually
* Set ``KeyProgressIncrement`` manually to the value of the seek duration in the settings so that it works when using the DPad
* consolidated code inside a new method to avoid duplication
2021-08-26 17:16:51 +02:00
Stypox
bbcfdf2969 Merge pull request #6917 from sherlockbeard/sherlockbeard-notAvailableVector
Change "not available" image from PNG to vector format
2021-08-25 17:12:07 +02:00
litetex
36e72d5a41 Update ci.yml
Using Java 11
2021-08-25 17:05:10 +02:00
litetex
f8297a8a9b Updated `com.android.tools.build:gradle` to 7.0.1
Release notes are available here: https://developer.android.com/studio/releases/gradle-plugin#7-0-0
2021-08-25 16:48:18 +02:00
ktprograms
a4503eb609 Remove TAG parameter, refactor method calls 2021-08-25 17:04:15 +08:00
ktprograms
a1cb3e59d6 Move opening popup menu to utility class 2021-08-25 09:30:40 +08:00
ktprograms
ef94458249 Remove xerial sqlite dependency 2021-08-25 09:00:36 +08:00
ktprograms
1b05c404d5 Remove Details option in Main Player Queue menu 2021-08-25 08:56:26 +08:00
ktprograms
5de455bb86 Change type of themeWrapper to ContextThemeWrapper 2021-08-25 08:56:26 +08:00
ktprograms
acdfee5c25 Show popup menu when long pressing in play queue (Full screen player) 2021-08-25 08:56:26 +08:00
Tobi
a6d6ed6474 Merge pull request #3546 from Stypox/search-history
Allow choosing which types of search suggestions to show
2021-08-24 19:27:36 +02:00
Stypox
87e7d95966 Do not show suggestions error snackbar for interrupted I/O
Fix formatting
2021-08-24 18:16:17 +02:00
Stypox
d37ee1e0dc First run migrations, then setDefaultValues, since the latter requires the correct types 2021-08-24 18:16:17 +02:00
Stypox
1d33e7ab49 Allow choosing which types of search suggestions to show
local, remote, both, none
Replacing the old on-off setting
2021-08-24 18:16:16 +02:00
Stypox
2027b743b4 Merge pull request #6919 from ktprograms/channel-details-all-places
Add Show Channel Details where it's missing
2021-08-24 16:43:21 +02:00
ktprograms
7e27e73532 Remove xerial sqlite dependency 2021-08-24 22:07:30 +08:00
Tobi
3705a1adad Merge pull request #6942 from mhmdanas/add-no-response-action
Add no-response workflow
2021-08-24 15:59:47 +02:00
Tobi
793b88a7d4 Merge pull request #5928 from Stypox/picasso
Replace UniversalImageLoader with Picasso
2021-08-24 15:54:16 +02:00
ktprograms
2928df0cc9 Fix checkstyle ParenPad error 2021-08-24 21:17:08 +08:00
ktprograms
4f5e772157 Remove xerial sqlite dependency 2021-08-24 19:43:27 +08:00
ktprograms
f7a0b9951e Move Choose Tabs help message to Action Bar subtitle 2021-08-24 17:28:28 +08:00
Stypox
44128f9145 Remove placeholder image while loading thumbnails 2021-08-24 10:56:25 +02:00
Stypox
6eaff5ca6a Apply review: move thumbnail loading out of Player 2021-08-24 10:56:25 +02:00
Stypox
c0664c1cb6 Add Picasso to licences and remove Universal Image Loader 2021-08-24 10:56:25 +02:00
Stypox
e229e5355d Always create new bitmap when resizing thumbnail
This prevents strange crashes on some devices, fixes #4638
2021-08-24 10:56:25 +02:00
Stypox
52189fc5df Add debug setting to enable Picasso indicators 2021-08-24 10:56:25 +02:00
Stypox
314964c5f9 Recycle Bitmap in transformation 2021-08-24 10:56:25 +02:00
Stypox
fcef783bbb Replace UniversalImageLoader with Picasso 2021-08-24 10:56:25 +02:00
Stypox
9c5ac069d7 Merge pull request #6244 from sauravrao637/6203
changed dark theme colors to darker variant
2021-08-24 10:48:36 +02:00
ktprograms
160f9df64e Add how to remove tab from main page text 2021-08-24 09:39:18 +08:00
Tobi
bdbb9bead2 Merge pull request #6848 from Stypox/somali-cancel
Use custom cancel string everywhere
2021-08-22 22:36:14 +02:00
Tobi
e4dfce9ee2 Merge pull request #6952 from Aga-C/wrap-settings-titles
Added wrapping settings titles to the next line
2021-08-22 22:34:07 +02:00
TobiGr
6fbb601802 Merge branch 'master' into dev 2021-08-22 22:22:37 +02:00
Tobi
94b4c76749 Merge pull request #6840 from TeamNewPipe/release_0.21.9
Release 0.21.9
2021-08-22 22:21:36 +02:00
TobiGr
8715e7dd98 Only show "mark as watched" context menu entry when watch history is enabled 2021-08-22 22:15:05 +02:00
TobiGr
ccc2d892c1 Update extractor version to 0.21.9 2021-08-22 20:23:01 +02:00
TobiGr
d1ce8e7baa Removed unsued string from translations: item_in_history 2021-08-22 20:23:01 +02:00
TobiGr
82fbbbecac Fixed plurals 2021-08-22 20:23:01 +02:00
TobiGr
bf029ddd9f Removed unsued string from translations: item_in_history 2021-08-22 20:19:37 +02:00
TobiGr
af5f0c042a Fixed plurals 2021-08-22 20:18:15 +02:00
Hosted Weblate
4e15f0ddac Translated using Weblate (Finnish)
Currently translated at 10.7% (6 of 56 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Spanish)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Polish)

Currently translated at 51.7% (29 of 56 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Galician)

Currently translated at 93.6% (635 of 678 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 97.0% (658 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 97.0% (658 of 678 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 3.5% (2 of 56 strings)

Translated using Weblate (Swedish)

Currently translated at 98.0% (665 of 678 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (German)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (French)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Portuguese)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 96.7% (656 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 97.1% (659 of 678 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (English)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Albanian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Polish)

Currently translated at 48.2% (27 of 56 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 94.2% (640 of 679 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Persian)

Currently translated at 94.4% (641 of 679 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (French)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Hebrew)

Currently translated at 48.1% (26 of 54 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Arabic)

Currently translated at 99.7% (677 of 679 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Greek)

Currently translated at 99.7% (677 of 679 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (French)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Spanish)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Tamil)

Currently translated at 36.6% (248 of 677 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Esperanto)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.4% (14 of 53 strings)

Translated using Weblate (Estonian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.4% (660 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Korean)

Currently translated at 76.0% (515 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Spanish)

Currently translated at 28.3% (15 of 53 strings)

Translated using Weblate (Estonian)

Currently translated at 97.0% (657 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 3.7% (2 of 53 strings)

Translated using Weblate (French)

Currently translated at 67.9% (36 of 53 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.3% (659 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.3% (659 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Latvian)

Currently translated at 94.5% (640 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 24.5% (13 of 53 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (German)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Galician)

Currently translated at 91.5% (620 of 677 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (French)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Bengali (Bangladesh))

Currently translated at 59.6% (404 of 677 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 97.1% (658 of 677 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (French)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Romanian)

Currently translated at 93.0% (626 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 3.7% (2 of 53 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 90.3% (608 of 673 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 87.9% (592 of 673 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (French)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Albanian)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 1.8% (1 of 53 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.4% (386 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.4% (386 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Gujarati)

Currently translated at 15.3% (103 of 672 strings)

Translated using Weblate (Hindi)

Currently translated at 81.6% (549 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Added translation using Weblate (Gujarati)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Andrij Mizyk <andmizyk@gmail.com>
Co-authored-by: AntonAkovP <anton.akov@gmail.com>
Co-authored-by: Anxhelo Lushka <anxhelo1995@gmail.com>
Co-authored-by: Ashune <ashune@protonmail.com>
Co-authored-by: Blaise Pascal <blaisepcl00@gmail.com>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: Cerins <cerins4141@gmail.com>
Co-authored-by: Christian Draxl <draxl.koever@gmail.com>
Co-authored-by: Christian Eichert <c@zp1.net>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Deleted User <noreply+34051@weblate.org>
Co-authored-by: Eduardo Caron <eduardocaron10@gmail.com>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Evo <weblate@verahawk.com>
Co-authored-by: Garden Hose <maxmammath@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Isak Holmström <isak@kajko.se>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Jesus Cass <cjesusenrique1@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Jonatan Nyberg <jonatan@autistici.org>
Co-authored-by: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>
Co-authored-by: Kristjan Räts <kristjanrats@gmail.com>
Co-authored-by: Laszlo Almasi <almalaci@posteo.net>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Martin Constantino–Bodin <martin.bodin@ens-lyon.org>
Co-authored-by: Matyas-Cerny <matyas.c.404@gmail.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Nadir Nour <dudethatwascool2@gmail.com>
Co-authored-by: Nikita Epifanov <nikgreens@protonmail.com>
Co-authored-by: Ordtrogen Översättning <johan@ordtrogen.se>
Co-authored-by: Rahul Dev Sharma <sci94tune@gmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Ricardo <contatorms7@tutamail.com>
Co-authored-by: S3aBreeze <paperwork@evilcorp.ltd>
Co-authored-by: Saravanan Selvaraju <saravanan036@outlook.com>
Co-authored-by: Sergio Varela <sergitroll9@gmail.com>
Co-authored-by: SomeRetardedThatTranslatesStuff <the.eumitosis@simplelogin.fr>
Co-authored-by: Thiago Carmona Monteiro <Guarakami1807@protonmail.ch>
Co-authored-by: TiA4f8R <avdivers84@gmail.com>
Co-authored-by: TobiGr <tobigr@mail.de>
Co-authored-by: ToldYouThat <itoldyouthat@protonmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: WaldiS <sto@tutanota.de>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: brokenPipe <ythunar@btcminers.tk>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: michaloM <michalsvoboda2004@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: nzgha <osmshrn21.upogs@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: thami simo <simo.azad@gmail.com>
Co-authored-by: translator <yasinoc375@advew.com>
Co-authored-by: zeritti <woodenmo@posteo.de>
Co-authored-by: zmni <zmni@outlook.com>
Co-authored-by: Ács Zoltán <acszoltan111@gmail.com>
Co-authored-by: Ákos Surányi <akosuranyi@tutanota.com>
Co-authored-by: Андрей Станков <astankov84@gmail.com>
Co-authored-by: мачко <martinpeev@tutanota.com>
Co-authored-by: 정주찬 <ju1801@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bg/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ckb/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-08-22 19:55:52 +02:00
Hosted Weblate
b566355c4f Translated using Weblate (Finnish)
Currently translated at 10.7% (6 of 56 strings)

Translated using Weblate (Finnish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Spanish)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Polish)

Currently translated at 51.7% (29 of 56 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 99.5% (675 of 678 strings)

Translated using Weblate (Galician)

Currently translated at 93.6% (635 of 678 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 97.0% (658 of 678 strings)

Translated using Weblate (Croatian)

Currently translated at 97.0% (658 of 678 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 3.5% (2 of 56 strings)

Translated using Weblate (Swedish)

Currently translated at 98.0% (665 of 678 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (German)

Currently translated at 99.8% (677 of 678 strings)

Translated using Weblate (Ukrainian)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (French)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Portuguese)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Croatian)

Currently translated at 96.7% (656 of 678 strings)

Translated using Weblate (Swedish)

Currently translated at 97.1% (659 of 678 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (678 of 678 strings)

Translated using Weblate (English)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 53.5% (30 of 56 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Albanian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Polish)

Currently translated at 48.2% (27 of 56 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 94.2% (640 of 679 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Persian)

Currently translated at 94.4% (641 of 679 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (French)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Hebrew)

Currently translated at 48.1% (26 of 54 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Arabic)

Currently translated at 99.7% (677 of 679 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Greek)

Currently translated at 99.7% (677 of 679 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (French)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Spanish)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (German)

Currently translated at 99.8% (678 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (679 of 679 strings)

Translated using Weblate (Tamil)

Currently translated at 36.6% (248 of 677 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Esperanto)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 26.4% (14 of 53 strings)

Translated using Weblate (Estonian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.4% (660 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Korean)

Currently translated at 76.0% (515 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Spanish)

Currently translated at 28.3% (15 of 53 strings)

Translated using Weblate (Estonian)

Currently translated at 97.0% (657 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Hungarian)

Currently translated at 85.6% (580 of 677 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 3.7% (2 of 53 strings)

Translated using Weblate (French)

Currently translated at 67.9% (36 of 53 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.3% (659 of 677 strings)

Translated using Weblate (Swedish)

Currently translated at 97.3% (659 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Latvian)

Currently translated at 94.5% (640 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 24.5% (13 of 53 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (German)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Galician)

Currently translated at 91.5% (620 of 677 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (French)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Bengali (Bangladesh))

Currently translated at 59.6% (404 of 677 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 97.1% (658 of 677 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (677 of 677 strings)

Translated using Weblate (Russian)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (French)

Currently translated at 99.8% (676 of 677 strings)

Translated using Weblate (Romanian)

Currently translated at 93.0% (626 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 3.7% (2 of 53 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 90.3% (608 of 673 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 87.9% (592 of 673 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (French)

Currently translated at 100.0% (673 of 673 strings)

Translated using Weblate (Somali)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Albanian)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 1.8% (1 of 53 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.8% (389 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.4% (386 of 672 strings)

Translated using Weblate (Bulgarian)

Currently translated at 57.4% (386 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Translated using Weblate (Gujarati)

Currently translated at 15.3% (103 of 672 strings)

Translated using Weblate (Hindi)

Currently translated at 81.6% (549 of 672 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (672 of 672 strings)

Added translation using Weblate (Gujarati)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Andrij Mizyk <andmizyk@gmail.com>
Co-authored-by: AntonAkovP <anton.akov@gmail.com>
Co-authored-by: Anxhelo Lushka <anxhelo1995@gmail.com>
Co-authored-by: Ashune <ashune@protonmail.com>
Co-authored-by: Blaise Pascal <blaisepcl00@gmail.com>
Co-authored-by: ButterflyOfFire <ButterflyOfFire@protonmail.com>
Co-authored-by: Cerins <cerins4141@gmail.com>
Co-authored-by: Christian Draxl <draxl.koever@gmail.com>
Co-authored-by: Christian Eichert <c@zp1.net>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Deleted User <noreply+34051@weblate.org>
Co-authored-by: Eduardo Caron <eduardocaron10@gmail.com>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <spice2wolf@gmail.com>
Co-authored-by: Evo <weblate@verahawk.com>
Co-authored-by: Garden Hose <maxmammath@gmail.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Isak Holmström <isak@kajko.se>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Jesus Cass <cjesusenrique1@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Jonatan Nyberg <jonatan@autistici.org>
Co-authored-by: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>
Co-authored-by: Kristjan Räts <kristjanrats@gmail.com>
Co-authored-by: Laszlo Almasi <almalaci@posteo.net>
Co-authored-by: Ldm Public <ldmpub@gmail.com>
Co-authored-by: Martin Constantino–Bodin <martin.bodin@ens-lyon.org>
Co-authored-by: Matyas-Cerny <matyas.c.404@gmail.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Nadir Nour <dudethatwascool2@gmail.com>
Co-authored-by: Nikita Epifanov <nikgreens@protonmail.com>
Co-authored-by: Ordtrogen Översättning <johan@ordtrogen.se>
Co-authored-by: Rahul Dev Sharma <sci94tune@gmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Ricardo <contatorms7@tutamail.com>
Co-authored-by: S3aBreeze <paperwork@evilcorp.ltd>
Co-authored-by: Saravanan Selvaraju <saravanan036@outlook.com>
Co-authored-by: Sergio Varela <sergitroll9@gmail.com>
Co-authored-by: SomeRetardedThatTranslatesStuff <the.eumitosis@simplelogin.fr>
Co-authored-by: Thiago Carmona Monteiro <Guarakami1807@protonmail.ch>
Co-authored-by: TiA4f8R <avdivers84@gmail.com>
Co-authored-by: TobiGr <tobigr@mail.de>
Co-authored-by: ToldYouThat <itoldyouthat@protonmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: WaldiS <sto@tutanota.de>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: brokenPipe <ythunar@btcminers.tk>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: chr56 <chr0056@gmail.com>
Co-authored-by: michaloM <michalsvoboda2004@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: nzgha <nzghafoss.ldxwe@slmail.me>
Co-authored-by: nzgha <osmshrn21.upogs@slmail.me>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: thami simo <simo.azad@gmail.com>
Co-authored-by: translator <yasinoc375@advew.com>
Co-authored-by: zeritti <woodenmo@posteo.de>
Co-authored-by: zmni <zmni@outlook.com>
Co-authored-by: Ács Zoltán <acszoltan111@gmail.com>
Co-authored-by: Ákos Surányi <akosuranyi@tutanota.com>
Co-authored-by: Андрей Станков <astankov84@gmail.com>
Co-authored-by: мачко <martinpeev@tutanota.com>
Co-authored-by: 정주찬 <ju1801@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bg/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ckb/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hans/
Translation: NewPipe/Metadata
2021-08-22 19:50:37 +02:00
Agnieszka C
5c31dff72d Added title wrap to other preferences 2021-08-21 18:49:12 +02:00
Agnieszka C
d69672e113 Added wrapping settings titles to the next line (#6951) 2021-08-21 14:21:55 +02:00
ktprograms
a209e87c69 Add Loading Channel Details Toast 2021-08-21 09:30:40 +08:00
Mohammed Anas
71610a365f Make workflow run daily instead of hourly 2021-08-19 21:08:23 +00:00
mhmdanas
44860f2ea7 Add no-response workflow 2021-08-19 00:46:31 +03:00
ktprograms
967bdf8f08 Remove migration test, add manual testing reminder to Migrations.java 2021-08-17 08:57:03 +08:00
ktprograms
02aa6fcab0 Remove v2 to v3 migration test, add v3 to v4 test 2021-08-16 21:12:54 +08:00
ktprograms
712985ced1 Save uploader url when adding from PlayQueueItem 2021-08-16 08:08:50 +08:00
litetex
0683dafa55 Merge pull request #6851 from litetex/make-parsing-of-timestamp-links-more-robust
Catch errors while processing timestamp-links
2021-08-14 21:10:20 +02:00
ktprograms
6f1958d398 Remove setting uploaderUrl to empty string if null 2021-08-14 20:59:38 +08:00
ktprograms
85fbd2560d Fix typo in app/build.gradle 2021-08-14 20:56:29 +08:00
ktprograms
65f2730261 Add comment about xerial sqlite workaround 2021-08-14 20:54:23 +08:00
ktprograms
21bcadeecb Make uploader_url column nullable 2021-08-14 17:48:35 +08:00
ktprograms
bd0427c79f Refactor duplicated code into method 2021-08-14 17:32:38 +08:00
ktprograms
241054fd26 Remove hardcoded string 2021-08-14 15:38:57 +08:00
ktprograms
d8888e3495 Catch error from ExtractorHelper.getStreamInfo, remove blockingGet 2021-08-14 09:07:27 +08:00
sherlockbeard
137d9e6d6e testing 2021-08-13 20:54:22 +05:30
sherlockbeard
d0cbd1e663 Replaced not avaliable image with a vector 2021-08-13 20:42:06 +05:30
sherlockbeard
da51e1ed72 Merge branch 'TeamNewPipe:dev' into dev 2021-08-13 19:05:50 +05:30
ktprograms
76803bfcb1 Save channelUrl to Database if it doesn't exist 2021-08-13 18:02:53 +08:00
ktprograms
c248741c00 Add Show Channel Details to Subscription Feed & History 2021-08-13 17:04:10 +08:00
ktprograms
759a078ce0 Add uploader_url column to StreamEntity 2021-08-13 16:44:50 +08:00
evermind-zz
a536311d56 name the regions according to the comments (#6854)
if a region is named android studio will show its name in the structure view.
2021-08-10 22:38:23 +00:00
TobiGr
9dd2a82b7d Update extractor version 2021-08-10 12:20:08 +02:00
Stypox
4d50a66e40 Un-nest some text views in play queue activity 2021-08-09 20:11:31 +02:00
phigjm
e6c56cacc6 Rearrange the play queue control elements
from bottom to top: Playback_controls, progress bar, center, (seek display)
2021-08-09 20:11:18 +02:00
XiangRongLin
c3b9465aa3 Merge pull request #6858 from XiangRongLin/ci_ktlint
Add gradle parameter to skip formatKtLint and use in CI
2021-08-07 12:36:56 +02:00
litetex
5f3b8bea52 Fixed format 2021-08-06 22:12:49 +02:00
litetex
0e4c8ea8af Added tests for the `TimestampExtractor` 2021-08-06 22:09:03 +02:00
litetex
f9ab23bb4a Removed useless fiedl 2021-08-06 22:08:42 +02:00
litetex
9f8b2264a2 Use better pattern for matching timestamp in text and some reworks
Also extracted overhead code into ``TimestampExtractor``
2021-08-06 22:08:29 +02:00
XiangRongLin
52cc3f10c1 Add gradle parameter to skip formatKtLint and use in CI 2021-08-06 18:11:22 +02:00
litetex
1d61bb58f5 Set loglevel to error
Co-authored-by: Stypox <stypox@pm.me>
2021-08-05 20:26:17 +02:00
Stypox
a3440cc8ef Merge pull request #6814 from Stypox/channel-grid-span-count
Fix channel item span count for SubscriptionFragment
2021-08-05 14:25:39 +02:00
litetex
51c60e5261 Catch errors while processing timestamp-links
Otherwise the complete app crashes, which is bad
2021-08-04 22:35:41 +02:00
Tobi
c3349e18a5 Merge pull request #6847 from Stypox/play-queue-theme
Play queue theme
2021-08-04 22:30:17 +02:00
litetex
12e46e0a36 Allow manual execution of ci workflow (#6809) 2021-08-04 17:00:15 +00:00
Stypox
f8caed139a Use custom cancel string everywhere
to fix missing somali translation for android.R.string.cancel
2021-08-04 18:58:35 +02:00
Stypox
a2297fb5b8 Fix play queue theme 2021-08-04 18:41:23 +02:00
K0RR
26c39381a8 Optimize assets. (#6827)
Lossless compression.
2021-08-04 11:54:32 +00:00
Stypox
a4742ad9e9 v0.21.9 (975) changelog 2021-08-04 12:07:02 +02:00
Stypox
23a6973291 v0.21.9 (975) changelog 2021-08-04 11:51:29 +02:00
Stypox
340a84e583 Release 0.21.9 (975) 2021-08-04 10:38:59 +02:00
Stypox
4291877830 Merge branch 'master' into dev 2021-08-04 10:36:59 +02:00
Mohammed Anas
c7f75bf7d1 Ignore paths unrelated to builds in CI (#6789) 2021-08-02 13:29:39 +00:00
Stypox
4bf5ddbfe9 Merge pull request #6792 from XiangRongLin/update_extractor
Update extractor, thus including throttling fixes
2021-08-01 20:11:21 +02:00
Stypox
32dffb577c Provide mime type to file picker to gray out unselectable files 2021-08-01 13:52:32 +02:00
Stypox
a9623f8e6a Merge pull request #6550 from Douile/fix/clickthrough-feed-refresh
Disable feed click events while refresh overlay is shown
2021-08-01 13:11:24 +02:00
Stypox
bc74bb6bf6 Merge pull request #6633 from Isira-Seneviratne/Use_NotificationChannelCompat
Use NotificationChannelCompat.
2021-08-01 11:58:38 +02:00
Isira Seneviratne
d32450255c Use NotificationChannelCompat. 2021-08-01 14:59:30 +05:30
Robin
896aec5295 Merge pull request #6719 from TacoTheDank/core-lifecycle-bump
Update some AndroidX libraries
2021-08-01 11:24:33 +02:00
Stypox
d42a534fc3 Merge pull request #6741 from KalleStruik/comment-hearts
Show hearts in comments
2021-08-01 11:12:58 +02:00
XiangRongLin
398007ca90 Update extractor, thus including throttling fixes 2021-08-01 10:36:03 +02:00
Stypox
551e8df8b8 Merge pull request #6773 from nschulzke/mark-as-played
Add ability to mark an item as played
2021-08-01 10:30:36 +02:00
Nathan Schulzke
dc0a28b93d Upsert the complete info if we fetch it for marking as watched 2021-07-31 09:50:41 -06:00
Stypox
644396149b Fix channel item span count for SubscriptionFragment 2021-07-31 11:02:57 +02:00
Stypox
a25bb2618a Merge pull request #6808 from litetex/ci-run-format-ktlin-before-building
Check formatting of kotlin files in CI
2021-07-31 10:35:53 +02:00
Nathan Schulzke
0e12cdea7c Save the fetched duration to the database so that it can render the view correctly. 2021-07-29 20:59:23 -06:00
litetex
903296014a Check formatting of kotlin files in CI 2021-07-28 21:03:51 +02:00
Tobi
cd713db029 Merge pull request #6778 from Stypox/invalid-storage-npe
Fix NullPointerException when checking if storage exists
2021-07-28 16:54:57 +02:00
Nathan Schulzke
bdd16e06e0 Add comments describing the purpose of the markAsWatched method 2021-07-28 08:25:39 -06:00
Nathan Schulzke
4c632810ec Fetch the stream info via a network request if no duration is found when attempting to mark as watched. 2021-07-27 15:21:56 -06:00
Nathan Schulzke
f451bdbfa4 Do not add Mark as Watched to a live stream. 2021-07-27 15:21:56 -06:00
Kalle Struik
bfac73b992 Make heart visible in android studio and move logic to the right file. 2021-07-27 22:34:59 +02:00
Nathan Schulzke
2b41f710a8 Change played to watched 2021-07-27 13:26:51 -06:00
Stypox
5924edb289 Merge pull request #6782 from TacoTheDank/fix-fill-parent
Fix deprecated fill_parent attributes
2021-07-27 19:45:51 +02:00
Stypox
5ceec31adf Merge pull request #6720 from TacoTheDank/alertdialog-edittext
Consolidate edittext alert dialogs into one common layout
2021-07-27 19:42:51 +02:00
TacoTheDank
e2791cdf0f Fix deprecated fill_parent attributes 2021-07-27 13:38:59 -04:00
TacoTheDank
50f3b08c59 Consolidate edittext alert dialogs into one layout 2021-07-27 13:31:58 -04:00
Stypox
2aebf6ceaf Add log when existsAsFile() is called on an invalid StoredFileHelper 2021-07-27 17:56:41 +02:00
Stypox
7ceea2cd8d Merge pull request #6771 from litetex/fix-ToolbarSearchInputTheme
Fixed the ToolbarSearchTheme
2021-07-27 11:49:55 +02:00
Stypox
0cb801179c Merge pull request #6733 from Douile/fix/recaptcha-webview-background-activity
Prevent recaptcha webview from keeping youtube loaded in background
2021-07-27 11:41:17 +02:00
Stypox
1822d21676 Fix NullPointerException when checking if storage exists 2021-07-27 11:36:14 +02:00
Nathan Schulzke
7fd2ebc252 Add ability to mark an item as played 2021-07-26 20:51:41 -06:00
litetex
f709ac16f8 Fixed the toolbarSearchTheme
The toolbarSearchTheme was accidently broken with https://github.com/TeamNewPipe/NewPipe/pull/6456, see https://github.com/TeamNewPipe/NewPipe/pull/6456#issuecomment-885920235 for details.
This commit restores the old behavior
2021-07-26 21:05:12 +02:00
Kalle Struik
74173317de Change heart color to be red, add else clause for non hearted comments, and apply some code style suggestions. 2021-07-23 19:43:25 +02:00
Kalle Struik
3874e16187 Added support for showing when a comment has received a heart from the creator of a video. 2021-07-23 17:30:47 +02:00
Tobi
39722a5563 Merge pull request #6721 from Stypox/pending-mission-crash
Delete pending missions with invalid storage
2021-07-22 16:22:58 +02:00
Robin
1f9ad12593 Merge pull request #6712 from Stypox/fix-duplicate-items-queue
Fix duplicate items in queue causing endless buffering
2021-07-22 13:26:01 +02:00
Tom
52c136439e Use loadUrl instead of loadData
Co-authored-by: Stypox <stypox@pm.me>
2021-07-22 10:47:47 +00:00
Douile
cd86ed3877 Prevent recaptcha webview from keeping youtube loaded in background
After the cookies are extracted from the recaptcha webview make it load an empty
page to prevent youtube being loaded unecessarily in the background.
2021-07-22 02:41:01 +01:00
TacoTheDank
1d85661ab9 Update some AndroidX libraries 2021-07-21 19:31:41 -04:00
Stypox
736cefed5a Add tests for play queue items' equals() 2021-07-21 18:22:17 +02:00
Stypox
fa8630ddae Use url comparison between queue items when disabling preloading
From #4562: Disable player stream preloading only if the current stream is going to be replaced for sure (see this). equals() was implemented for PlayQueueItems, so that (only) the url is compared when checking them.
2021-07-21 18:09:18 +02:00
Stypox
4a2bd7bd7b Remove equals() method from PlayQueueItem 2021-07-21 18:09:18 +02:00
Stypox
a9e21a35ea Delete pending missions with invalid storage 2021-07-21 10:52:04 +02:00
Tobi
fd4e1b8d2c Merge pull request #6715 from TeamNewPipe/readd_api_29
Readd api level 29 to android CI tests
2021-07-20 23:46:49 +02:00
TobiGr
420f0505ae Merge branch 'master' into dev 2021-07-20 23:29:12 +02:00
XiangRongLin
c422f65935 Readd api level 29 to android CI tests
The action got fixed and released https://github.com/ReactiveCircus/android-emulator-runner/releases/tag/v2.19.1
2021-07-20 18:28:46 +02:00
Tobi
63fdc100d6 Merge pull request #6705 from Stypox/big-text-info-items
Fix grid span count calculation
2021-07-19 22:45:48 +02:00
Tobi
9e2ece78dd Merge pull request #6701 from Stypox/dismiss-download-dialog
Dismiss download dialog correctly
2021-07-19 21:47:12 +02:00
Tobi
cebcaf4d6a Merge pull request #6706 from litetex/fix-format-of-some-kotlin-files
Fix format of some kotlin files
2021-07-19 21:20:00 +02:00
Stypox
4a242e43a7 Merge pull request #6689 from Isira-Seneviratne/Use_WindowInsetsCompat_getInsets
Use WindowInsetsCompat's getInsets() method.
2021-07-19 21:19:06 +02:00
Tobi
d8f442cc89 Merge pull request #6707 from litetex/use-correct-extractor-dependency
Use the correct extractor dependency
2021-07-19 21:17:27 +02:00
litetex
f6923e073e Use the correct extractor dependency 2021-07-19 21:03:15 +02:00
litetex
f02c6be10d Fix format of some kotlin files
so that it doesn't annoy people that are building this repo ;)
2021-07-19 20:59:29 +02:00
Stypox
5ba3ef0a25 Fix grid span count calculation; remove duplicate methods 2021-07-19 20:47:50 +02:00
Isira Seneviratne
9458b9f37d Use PackageInfoCompat.getSignatures(). 2021-07-19 19:48:24 +05:30
Stypox
ca282f2be8 Merge pull request #6675 from Isira-Seneviratne/Use_Kotlin_methods
Use Kotlin methods in LicenseFragment.
2021-07-19 13:19:02 +02:00
Robin
0cde08c46e Merge pull request #6702 from Isira-Seneviratne/Update_AppCompat_to_1.3.0
Update AppCompat to 1.3.0.
2021-07-19 11:58:17 +02:00
Stypox
bec8512c7b Merge pull request #6659 from TeamNewPipe/Redirion-kotlin-section
Added a Kotlin section in CONTRIBUTING.md
2021-07-19 11:54:48 +02:00
Stypox
46e7da4e21 Merge pull request #6688 from litetex/fix-some-build-warnings
Fix some build warnings
2021-07-19 11:52:24 +02:00
Isira Seneviratne
c7b8bd3436 Update AppCompat to 1.3.0. 2021-07-19 15:20:44 +05:30
Isira Seneviratne
1721817fdb Use WindowInsetsCompat's getInsets() method. 2021-07-19 15:17:44 +05:30
Stypox
d57bfde604 Merge pull request #6434 from litetex/playerSeekbarPreview
Player seekbar thumbnail preview
2021-07-19 11:42:10 +02:00
Stypox
3167ab3ba0 Merge pull request #6654 from Isira-Seneviratne/Bump_compileSdk
Bump compileSdkVersion to 30.
2021-07-19 11:11:18 +02:00
Stypox
8f559965f6 Call DownloadDialog dismiss() in the correct way 2021-07-19 10:59:45 +02:00
Stypox
35e005caaa Improve method order in DownloadDialog and add separator comments 2021-07-18 14:23:38 +02:00
Stypox
6c25ce56a3 Merge pull request #6456 from TeamNewPipe/feature/switch-theme
Apply theme to switches
2021-07-18 13:12:47 +02:00
Stypox
baa12c7069 Merge pull request #6536 from TacoTheDank/moar-onactivityresult
More onActivityResult deprecation fixes
2021-07-18 10:24:00 +02:00
Isira Seneviratne
e2b044d2ee Use Kotlin methods in LicenseFragment. 2021-07-18 07:47:12 +05:30
litetex
621af8d812 Removed unused import (rebasing/merge problem) 2021-07-17 16:52:24 +02:00
litetex
efd038a536 Increased padding of preview thumbnail 2021-07-17 16:43:04 +02:00
litetex
0b2629e910 Moved time to the top 2021-07-17 16:43:03 +02:00
litetex
a9b5ef3bd3 Set minWidth to 10dp so that the popup player works (mostly) correctly 2021-07-17 16:43:03 +02:00
litetex
2a24532e1d Fine tuned padding
Moved seekbar preview up a bit, so the finger is not obstructing the view
2021-07-17 16:43:02 +02:00
litetex
88c4195260 Enlarged currentDisplaySeek-text on large-handed player 2021-07-17 16:43:01 +02:00
litetex
c5f2eb1dd8 Enlarged currentDisplaySeek a bit 2021-07-17 16:43:01 +02:00
litetex
384d964827 Added seekbarThumbnailPreview 2021-07-17 16:43:00 +02:00
litetex
253526e565 Updated build.gradle so the PR-build works 2021-07-17 16:42:18 +02:00
litetex
2e2dbaf77f Added seekbar-preview to the player layout 2021-07-17 16:41:54 +02:00
litetex
43133df2ad Added settings for seekbar-preview-thumbnail 2021-07-17 16:41:53 +02:00
Stypox
eef568b24c Merge pull request #5531 from XiangRongLin/tests
Add instrumented tests for LocalPlaylistManager.createPlaylist
2021-07-17 13:21:20 +02:00
Stypox
e7d5011f42 Merge pull request #6483 from litetex/addDisabledComments
Added comments disabled functionallity
2021-07-17 13:19:34 +02:00
litetex
36c198fc33 One textview is enough for disabled comments
Ref: https://github.com/TeamNewPipe/NewPipe/pull/6483#discussion_r654793920
2021-07-17 13:14:50 +02:00
litetex
75a8edf20f Added corresponding required code changes from Extractor branch 2021-07-17 13:14:48 +02:00
litetex
81107df53f Added comments disabled functionallity 2021-07-17 13:10:44 +02:00
Stypox
a932bc2503 Merge pull request #6637 from Isira-Seneviratne/Use_GestureDetectorCompat
Use GestureDetectorCompat.
2021-07-17 12:58:43 +02:00
litetex
f4e2eca256 Simplified code and adjusted the style so that it's similar to FeedFragment 2021-07-16 21:21:10 +02:00
litetex
08d5dfa49c Removed updateRelativeTimeViews when the activity is paused
We don't need to call ``updateRelativeTimeViews`` when the activity is paused, because the user likely won't  notice it.
Despite that onResume already calls ``updateRelativeTimeViews`` so there is no need to do that twice.
2021-07-16 21:04:32 +02:00
Tobi
e7f339a946 Merge pull request #6678 from TeamNewPipe/XiangRongLin-patch-1
Remove api level 29 from android ci tests
2021-07-16 11:30:23 +02:00
XiangRongLin
d3375a921d Remove api level 29 from android ci tests 2021-07-16 10:19:58 +02:00
Robin
a2eb810df0 removed Extractor line 2021-07-14 13:23:01 +02:00
Robin
6e576a165c Added a Kotlin section in CONTRIBUTING.md
Core team does not want to convert to Kotlin yet and sees Java as the easier to learn and more well adopted language.

This stance might of course change in the future. For example it could be reasonable to do a complete transition to Kotlin once it is decides that the minSdk is raised to 21 or higher, as we then could use Jetpack particularly Lifecycle and Compose.
2021-07-14 13:08:07 +02:00
Tobi
dfa941a9e7 Merge pull request #6503 from evermind-zz/fixes-for-upstream
Prevent error msg: 'Unrecoverable player error occurred' while playin…
2021-07-14 09:53:30 +02:00
Tobi
1584028995 Merge pull request #6531 from XiangRongLin/immediat_pref_commit
Remove option to immediately commit pref changes on import
2021-07-14 09:48:58 +02:00
Tobi
14dab85ff0 Merge pull request #6566 from evermind-zz/various-fixes-for-upstream
Convert PlayerHolder to Singleton; cleanup in VideoDetailFragment; Player/MainPlayer do not call onDestroy() directly
2021-07-14 09:46:04 +02:00
Isira Seneviratne
403e336a64 Bump compileSdkVersion to 30. 2021-07-13 08:06:56 +05:30
XiangRongLin
2aa5f68b7b Add comment explaining usage Schedulers.trampoline in detail 2021-07-12 18:31:37 +02:00
XiangRongLin
56ea526cce Add instrumented tests for LocalPlaylistManager.createPlaylist 2021-07-12 18:31:37 +02:00
Tobi
96f5cd9f17 Merge pull request #6463 from Stypox/metadata-tags
Improved metadata layout, better tags accessibility
2021-07-12 16:18:11 +02:00
Tobi
64efb89cce Merge pull request #6616 from litetex/fix-minimized-player-thumbnail
Made the thumbnail in the minimized player visible again
2021-07-12 16:17:12 +02:00
Tobi
4d5b68792b Merge pull request #6560 from TeamNewPipe/fix_ci_emulator
Specify emulator-build version in CI job
2021-07-12 16:16:06 +02:00
Tobi
85d813a94b Merge pull request #6540 from TacoTheDank/library-bumps
Update some libraries
2021-07-12 16:15:21 +02:00
Tobi
e9b008ee84 Merge pull request #6538 from TacoTheDank/bump-gradle
Bump gradle
2021-07-12 16:14:04 +02:00
magicfelix
79102a20d2 Add Tubus (Invidious) and EduVid (PeerTube) 2021-07-11 13:08:10 +02:00
Douile
2e053ea25a Fix crash when refreshing feed 2021-07-11 03:00:32 +01:00
Isira Seneviratne
6711dae4e0 Use GestureDetectorCompat. 2021-07-10 15:35:11 +05:30
litetex
85e864a01e Made the thumbnail in the minimized player visible again 2021-07-06 21:40:57 +02:00
TacoTheDank
573839c0ff Update Gradle to 7.x, AGP to 4.2.x 2021-07-06 12:16:20 -04:00
XiangRongLin
9c636f5ee2 Specify emulator-build version in CI job
This is a workaround for the emulator bug https://github.com/ReactiveCircus/android-emulator-runner/issues/160
2021-07-06 16:26:01 +02:00
evermind
f78d2a5ed8 Prevent error msg: 'Unrecoverable player error occurred' while playing video during rotation (#6502)
Playing a video in VideoDetailFragment and rotating the screen to landscape (back and forth more often)
can trigger this error message. Especially if rotation for whatever reason takes long or
playing a high resolution (1080p) video.

The underlying logcat error messages:
05-12 16:38:38.251 24920 26037 E Surface : getSlotFromBufferLocked: unknown buffer: 0x923fc810
05-12 16:38:38.251 24920 26037 W ACodec  : [OMX.qcom.video.decoder.avc] can not return buffer 35 to native window

The problem is that that Exoplayer is trying to write to our -- during rotation -- no longer existant
(VideoDetailFragment) SurfaceView.

Solution:
Implementing SurfaceHolder.Callback and using DummySurface we can now handle the lifecycle of the Surface.

How?: In case we are no longer able to write to the Surface eg. through rotation/putting in
background we can set a DummySurface. Although it only works on API >= 23.
Result: we get a little video interruption (audio is still fine) but we won't get the
'Unrecoverable player error occurred' error message.

This implementation is based on and more background information:
 'ExoPlayer stuck in buffering after re-adding the surface view a few time 2703'

 -> exoplayer fix suggestion link
  https://github.com/google/ExoPlayer/issues/2703#issuecomment-300599981
2021-07-06 12:49:56 +02:00
evermind
48c2c156cb convert PlayerHolder to Singleton, handle context within, bugfix ServiceConnection leak
- bugfix: have ServiceConnection created only once!

- select the context within the PlayerHolder to start, stop, bind or unbind the service
  -> we have to make sure the Service is started AND stopped within the same context
  -> so let PlayerHolder be the one to select the context

- remove removeListener() and replace the call with setListener(null)
- Compatibility: use ContextCompat.startForegroundService instead of startService()
2021-07-06 12:31:26 +02:00
evermind
435813355f use viewBinding correctly 2021-07-06 07:56:05 +02:00
evermind
e30a552b6c remove duplicated code for toggle Fullscreen 2021-07-06 07:56:00 +02:00
evermind
22a4a4b2df move null checks for player and playerService to helper methods
- code is easier to read
- duplication of code reduced
2021-07-06 07:55:52 +02:00
evermind
aaa3e20c5a service.onDestroy() should only be called from the system and not manually
instead use service.stopService() which inturn calls stopSelf() and
triggers hopefully onDestroy() to be called. Eventually we have to make
sure that all ServiceConnections are closed to successfully stop the service
now!

Cleanup within stopService() and not only onDestroy()

So we make sure that all listeners can react to onServiceStopped()
and close their ServiceConnections. Afterwards the android framework
is ready to stop the Service.
2021-06-24 10:15:07 +02:00
Douile
cb1a138140 #6081: Disable feed click handlers during refresh
This patch changes click handlers for feed (Whats new) so that they do
nothing while the feed is refreshing and the items being clicked are not
visible.
2021-06-22 19:42:20 +01:00
TacoTheDank
afe06b379f Update some libraries 2021-06-20 17:26:59 -04:00
TacoTheDank
08d4651ef0 Add mavenCentral, de-prioritize jcenter 2021-06-20 15:44:17 -04:00
TacoTheDank
02b0909829 Fix onActivityResult deprecation in MissionsFragment 2021-06-20 14:14:54 -04:00
TacoTheDank
ae39b31c68 Fix onActivityResult deprecation in DownloadDialog 2021-06-20 14:14:44 -04:00
TacoTheDank
e5a1438673 Fix onActivityResult deprecation in DownloadSettingsFragment 2021-06-20 14:11:00 -04:00
TacoTheDank
72d305b283 Update AndroidX Fragment to 1.3.5 2021-06-20 13:47:12 -04:00
XiangRongLin
785c0376f8 Remove variable ContentSettingsFragment.lastImportExportDataUri
Instead pass the value through the methods as parameter
2021-06-20 09:30:59 +02:00
XiangRongLin
0bdf8de38e Resolve sonar issues in ContentSettingsFragment
https://sonarcloud.io/organizations/teamnewpipe/rules?open=java%3AS2885&rule_key=java%3AS2885

https://sonarcloud.io/organizations/teamnewpipe/rules?open=java%3AS112&rule_key=java%3AS112
2021-06-20 09:30:59 +02:00
XiangRongLin
9767e98e50 Remove option to immediately commit pref changes on import
System is now not restarted with `System.exit(0)`.
Instead it is done properly by finishing the activity and restarting the activity. This allows preference changes which are queued up asynchronously through `apply` to be applied.
2021-06-20 09:17:55 +02:00
Saurav Rao
0782410a14 Update colors.xml 2021-06-19 04:05:35 +05:30
Robin
f5d015e8f9 Use ExoPlayer default values for buffers 2021-06-18 20:18:24 +02:00
camo0112
f00cffd17e improved dark theme for all services 2021-06-18 04:53:55 +05:30
Stypox
40a2df847b Move tags layout at the bottom, use multiple lines 2021-06-13 21:56:06 +02:00
Stypox
fa1d7ffac3 Const text width for metadata; scrollable tags layout 2021-06-09 15:32:07 +02:00
Stypox
272d589518 Convert related_items_header to ConstraintLayout 2021-06-09 13:10:26 +02:00
Stypox
6ab4787e97 Use SwitchCompat to make switch uniform across versions
Also just use colorControlActivated in the base V19 theme, instead of using the prefix android: in each V21 service theme
2021-06-09 13:04:21 +02:00
TobiGr
060f09ff55 Apply service color to switches 2021-06-08 20:11:05 +02:00
TobiGr
f47ae3668f [Bandcamp Add v21 styles 2021-06-08 20:11:05 +02:00
camo0112
7fdb6e1425 did missed changes 2021-05-07 03:27:59 +05:30
camo0112
621f049a5c improved dark_youtube_primary_color and dark_youtube_dark_color 2021-05-06 08:45:44 +05:30
sherlockbeard
eb6968fb3f Merge pull request #1 from TeamNewPipe/dev
uptodate
2021-03-27 19:13:18 +05:30
663 changed files with 12422 additions and 10388 deletions

View File

@@ -39,6 +39,10 @@ You'll see *exactly* what is sent, be able to add **your comments**, and then se
* Create PRs that cover only **one specific issue/solution/bug**. Do not create PRs that are huge monoliths and could have been split into multiple independent contributions.
* NewPipe uses [NewPipeExtractor](https://github.com/TeamNewPipe/NewPipeExtractor) to fetch data from services. If you need to change something there, you must test your changes in NewPipe. Telling NewPipe to use your extractor version can be accomplished by editing the `app/build.gradle` file: the comments under the "NewPipe libraries" section of `dependencies` will help you out.
### Kotlin in NewPipe
* NewPipe will remain mostly Java for time being
* Contributions containing a simple conversion from Java to Kotlin should be avoided. Conversions to Kotlin should only be done if Kotlin actually brings improvements like bug fixes or better performance which are not, or only with much more effort, implementable in Java. The core team sees Java as an easier to learn and generally well adopted programming language.
### Creating a Pull Request (PR)
* Make changes on a **separate branch** with a meaningful name, not on the _master_ branch or the _dev_ branch. This is commonly known as *feature branch workflow*. You may then send your changes as a pull request (PR) on GitHub.

View File

@@ -57,7 +57,7 @@ Oh no, a bug! It happens. Thanks for reporting an issue with NewPipe. To make it
<!-- Please fill this out when you do not provide a log generate by NewPipe -->
<!-- Please fill this section if you did not provide a log generated by NewPipe -->
### Device info

View File

@@ -5,10 +5,9 @@ labels: enhancement
assignees: ''
---
<!-- IF YOU DON'T FILL IN THE TEMPLATE PROPERLY, YOUR ISSUE IS LIABLE TO BE CLOSED. If you feel tired/lazy right now, open your issue some other time. We'll wait. -->
<!-- IF YOU DON'T FILL IN THE TEMPLATE PROPERLY, YOUR ISSUE IS LIABLE TO BE CLOSED. If you are currently unable to do so for any reason, open your issue some other time. We'll wait. -->
<!-- The comments between these brackets won't show up in the submitted issue (as you can see in the Preview). -->
<!-- The comments between these brackets won't show up in the submitted issue (as you can see in the Preview tab). -->
### Checklist
<!-- This checklist is COMPULSORY. The first box has been checked for you to show you how it is done. -->
@@ -17,30 +16,9 @@ assignees: ''
- [ ] I have read the contribution guidelines given at https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md.
- [ ] This issue contains only one feature request. I will open one issue for every feature I want to request.
#### Describe the feature you want
<!-- A clear and concise description of what you wish should happen.
Example: *I think it would be nice if you add feature Y which makes X possible.*
Optionally, also describe alternatives you've considered.
Example: *Z is also a good alternative. Not as good as Y, but at least...* or *I considered Z, but that didn't turn out to be a good idea because...* -->
#### What feature do you want?
<!-- Explain how you want the app's look or behavior to change to suit your needs. -->
#### Is your feature request related to a problem? Please describe it
<!-- A clear and concise description of what the problem is. Maybe the developers and the community could brainstorm and come up with a better solution to your problem. If they exist, link to related Issues and/or PRs for developers to keep track easier.
Example: *I want to do X, but there is no way to do it.* -->
#### Additional context
<!-- Add any other context, like screenshots, about the feature request here.
Example: *Here's a photo of my cat!* -->
#### How will you/everyone benefit from this feature?
<!-- Convince us! How does it change your NewPipe experience and/or your life?
The better this paragraph is, the more likely a developer will think about working on it.
Example: *This feature will help us colonize the galaxy! -->
#### Why do you want this feature?
<!-- Describe any problem or limitation you come across while using the app which would be solved by this feature. -->

View File

@@ -1,14 +1,25 @@
name: CI
on:
workflow_dispatch:
pull_request:
branches:
- dev
- master
paths-ignore:
- 'README*.md'
- 'fastlane/**'
- 'assets/**'
- '.github/**/*.md'
push:
branches:
- dev
- master
paths-ignore:
- 'README*.md'
- 'fastlane/**'
- 'assets/**'
- '.github/**/*.md'
jobs:
build-and-test-jvm:
@@ -22,21 +33,15 @@ jobs:
if: github.event_name == 'pull_request'
run: git checkout -B ${{ github.head_ref }}
- name: set up JDK 8
- name: set up JDK 11
uses: actions/setup-java@v2
with:
java-version: 8
distribution: "adopt"
- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
java-version: 11
distribution: "temurin"
cache: 'gradle'
- name: Build debug APK and run jvm tests
run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace
run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace -DskipFormatKtlint
- name: Upload APK
uses: actions/upload-artifact@v2
@@ -44,35 +49,30 @@ jobs:
name: app
path: app/build/outputs/apk/debug/*.apk
# Disabled until emulator works again. see https://github.com/TeamNewPipe/NewPipe/pull/6560
# test-android:
# macos has hardware acceleration. See android-emulator-runner action
# runs-on: macos-latest
# strategy:
# matrix:
# api-level 19 is min sdk, but throws errors related to desugaring
# api-level: [21, 29]
# steps:
# - uses: actions/checkout@v2
#
# - name: set up JDK 8
# uses: actions/setup-java@v2
# with:
# java-version: 8
# distribution: "adopt"
#
# - name: Cache Gradle dependencies
# uses: actions/cache@v2
# with:
# path: ~/.gradle/caches
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
# restore-keys: ${{ runner.os }}-gradle
#
# - name: Run android tests
# uses: reactivecircus/android-emulator-runner@v2
# with:
# api-level: ${{ matrix.api-level }}
# script: ./gradlew connectedCheck
test-android:
# macos has hardware acceleration. See android-emulator-runner action
runs-on: macos-latest
strategy:
matrix:
# api-level 19 is min sdk, but throws errors related to desugaring
api-level: [ 21, 29 ]
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
uses: actions/setup-java@v2
with:
java-version: 11
distribution: "temurin"
cache: 'gradle'
- name: Run android tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
# workaround to emulator bug: https://github.com/ReactiveCircus/android-emulator-runner/issues/160
emulator-build: 7425822
script: ./gradlew connectedCheck
# sonar:
# runs-on: ubuntu-latest
@@ -85,7 +85,8 @@ jobs:
# uses: actions/setup-java@v2
# with:
# java-version: 11 # Sonar requires JDK 11
# distribution: "adopt"
# distribution: "temurin"
# cache: 'gradle'
# - name: Cache SonarCloud packages
# uses: actions/cache@v2
@@ -94,13 +95,6 @@ jobs:
# key: ${{ runner.os }}-sonar
# restore-keys: ${{ runner.os }}-sonar
# - name: Cache Gradle packages
# uses: actions/cache@v2
# with:
# path: ~/.gradle/caches
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
# restore-keys: ${{ runner.os }}-gradle
# - name: Build and analyze
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any

20
.github/workflows/no-response.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: No Response
# Both `issue_comment` and `scheduled` event types are required for this Action
# to work properly.
on:
issue_comment:
types: [created]
schedule:
# Run daily at midnight.
- cron: '0 0 * * *'
jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: lee-dohm/no-response@v0.5.0
with:
token: ${{ github.token }}
daysUntilClose: 14
responseRequiredLabel: waiting-for-author

16
.gitignore vendored
View File

@@ -1,15 +1,15 @@
.gitignore
.gradle
/local.properties
.gradle/
local.properties
.DS_Store
/build
/captures
/app/app.iml
/.idea
/*.iml
build/
captures/
.idea/
*.iml
*~
.weblate
*.class
**/debug/
**/release/
# vscode / eclipse files
*.classpath

View File

@@ -1,30 +1,30 @@
<p align="center"><a href="https://newpipe.net"><img src="assets/new_pipe_icon_5.png" width="150"></a></p>
<h2 align="center"><b>NewPipe</b></h2>
<h4 align="center">Una interfaz de streaming lijera y libre para Android.</h4>
<h4 align="center">Una interfaz de streaming ligera y libre para Android.</h4>
<p align="center"><a href="https://f-droid.org/packages/org.schabi.newpipe/"><img src="https://f-droid.org/wiki/images/0/06/F-Droid-button_get-it-on.png"></a></p>
<p align="center"><a href="https://f-droid.org/packages/org.schabi.newpipe/"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on-es.svg"></a></p>
<p align="center">
<a href="https://github.com/TeamNewPipe/NewPipe/releases" alt="GitHub release"><img src="https://img.shields.io/badge/Lanzamiento-v0.20.11-blue.svg" ></a>
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="License: GPLv3"><img src="https://img.shields.io/badge/Licencia-GPL%20v3-blue.svg"></a>
<a href="https://github.com/TeamNewPipe/NewPipe/actions" alt="Build Status"><img src="https://github.com/TeamNewPipe/NewPipe/workflows/CI/badge.svg?branch=dev&event=push"></a>
<a href="https://hosted.weblate.org/engage/newpipe/es/" alt="Estado de la traducción"><img src="https://hosted.weblate.org/widgets/newpipe/es/svg-badge.svg"></a>
<a href="https://web.libera.chat/#newpipe" alt="IRC channel: #newpipe"><img src="https://img.shields.io/badge/Canal%20de%20IRC%20-%23newpipe-brightgreen.svg"></a>
<a href="https://www.bountysource.com/teams/newpipe" alt="Bountysource bounties"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f"></a>
<a href="https://github.com/TeamNewPipe/NewPipe/releases" alt="Lanzamientos GitHub"><img src="https://img.shields.io/github/release/TeamNewPipe/NewPipe.svg" ></a>
<a href="https://www.gnu.org/licenses/gpl-3.0" alt="Licencia: GPLv3"><img src="https://img.shields.io/badge/Licencia-GPL%20v3-blue.svg"></a>
<a href="https://github.com/TeamNewPipe/NewPipe/actions" alt="Estado del Build"><img src="https://github.com/TeamNewPipe/NewPipe/workflows/CI/badge.svg?branch=dev&event=push"></a>
<a href="https://hosted.weblate.org/engage/newpipe/es/" alt="Estado de la Traducción"><img src="https://hosted.weblate.org/widgets/newpipe/es/svg-badge.svg"></a>
<a href="https://web.libera.chat/#newpipe" alt="Canal de IRC: #newpipe"><img src="https://img.shields.io/badge/Canal%20de%20IRC%20-%23newpipe-brightgreen.svg"></a>
<a href="https://www.bountysource.com/teams/newpipe" alt="Recompensas en Bountysource"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f"></a>
</p>
<hr>
<p align="center"><a href="#capturas-de-pantalla">Capturas de pantalla</a> &bull; <a href="#descripción">Descripción</a> &bull; <a href="#características">Características</a> &bull; <a href="#installación-y-actualizaciones">Installación y actualizaciones</a> &bull; <a href="#contribución">Contribución</a> &bull; <a href="#donar">Donar</a> &bull; <a href="#licencias">Licencias</a></p>
<p align="center"><a href="https://newpipe.net">Sitio web</a> &bull; <a href="https://newpipe.net/blog/">Blog</a> &bull; <a href="https://newpipe.net/FAQ/">Preguntas Frecuentes</a> &bull; <a href="https://newpipe.net/press/">Prensa</a></p>
<p align="center"><a href="#capturas-de-pantalla">Capturas de Pantalla</a> &bull; <a href="#descripción">Descripción</a> &bull; <a href="#características">Características</a> &bull; <a href="#instalación-y-actualizaciones">Instalación y Actualizaciones</a> &bull; <a href="#contribución">Contribución</a> &bull; <a href="#donar">Donar</a> &bull; <a href="#licencia">Licencia</a></p>
<p align="center"><a href="https://newpipe.net">Sitio Web</a> &bull; <a href="https://newpipe.net/blog/">Blog</a> &bull; <a href="https://newpipe.net/FAQ/">Preguntas Frecuentes</a> &bull; <a href="https://newpipe.net/press/">Prensa</a></p>
<hr>
*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).*
<b>AVISO: ESTA ES UNA VERSIÓN BETA, POR LO TANTO, PUEDE ENCONTRAR BUGS (ERRORES). SI ENCUENTRA UNO, ABRA UN ISSUE A TRAVÉS DE NUESTRO REPOSITORIO GITHUB.</b>
<b>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.</b>
<b>COLOCAR NEWPIPE O CUALQUIER FORK (BIFURCACIÓN) REALIZADO DE ELLO EN GOOGLE PLAY STORE VIOLA SUS TÉRMINOS Y CONDICIONES.</b>
<b>COLOCAR NEWPIPE O CUALQUIER FORK DE NEWPIPE EN LA GOOGLE PLAY STORE VIOLA SUS TÉRMINOS Y CONDICIONES.</b>
## Capturas de pantalla
## Capturas de Pantalla
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_01.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_01.png)
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_02.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_02.png)
@@ -40,39 +40,43 @@
[<img src="fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png" width=405>](fastlane/metadata/android/en-US/images/tenInchScreenshots/shot_12.png)
## Descripción
NewPipe no usa ninguna librería de framework de Google, ni la API de YouTube. Los sitios web solamente se analizan para extraer la información requerida, asi que esta app se puede usar sin los servicios de Google instalados. Además, no se necesita una cuenta de YouTube para usar NewPipe, lo cual es un software libre de copyleft.
NewPipe no usa ninguna librería del framework de Google, ni la API de YouTube. Los sitios web solamente se analizan para extraer la información requerida, por lo que esta app se puede usar sin los servicios de Google instalados. Además, no se necesita una cuenta de YouTube para usar NewPipe, lo cual es un software libre de copyleft.
### Características
* Buscar videos
* No requiere inicio de sesión
* Mostrar información general sobre videos
* Mirar videos de YouTube
* Escuchar audio de YouTube
* Modo popup (reproductor flotante)
* Elegir reproductor para mirar el video
* Modo de solo audio en videos de YouTube
* Modo pop-up (reproductor flotante)
* Elegir un reproductor de video externo para mirar videos
* Descargar videos
* Descargar solamente audio
* Abrir video en Kodi
* Descargar solo audio
* Abrir videos en Kodi
* Mostrar videos próximos/relacionados
* Buscar a través de YouTube en un idioma específico
* Mirar/Bloquear materiales restringidas por edad.
* Mirar/Bloquear videos restringidos por edad
* Mostrar información general sobre canales
* Buscar canales
* Buscar de canales
* Mirar videos de un canal
* Apoyo Orbot/Tor (todavía no directamente)
* Apoyo 1080p/2K/4K
* Ver historias
* Subscribirse a canales
* Buscar historias
* Buscar/mirar listas de reproducción
* Mirar listas de reproducción en fila
* Poner videos en fila
* Listas locales de reproducción
* Soporte Orbot/Tor (todavía no directamente)
* Soporte para videos en 1080p/2K/4K
* Historial de videos vistos
* Suscripción a canales
* Historial de búsquedas
* Buscar/Mirar listas de reproducción
* Mirar listas de reproducción en cola
* Poner videos en cola
* Listas de reproducción locales
* Subtítulos
* Apoyo de medios en directo
* Soporte para transmisiones en vivo
* Mostrar comentarios
### Servicios apoyados
NewPipe apoya varios servicios. Nuestras [documentaciones](https://teamnewpipe.github.io/documentation/) proveen más información en como se puede agregar un servicio nuevo a la app y el extractor. Por favor contáctenos si pretende agregar uno nuevo. Actualmente los servicios apoyados son:
### Servicios Soportados
NewPipe soporta varios servicios. Nuestras [documentaciones](https://teamnewpipe.github.io/documentation/) ofrecen más información sobre cómo se puede agregar un servicio nuevo a la app y al extractor. Por favor ponte en contacto con nosotros si tienes pensado agregar uno nuevo. Actualmente los servicios soportados son:
* YouTube
* SoundCloud \[beta\]
@@ -80,61 +84,60 @@ NewPipe apoya varios servicios. Nuestras [documentaciones](https://teamnewpipe.g
* PeerTube instances \[beta\]
* Bandcamp \[beta\]
<!-- Brecha escondida para mantener compatibles los enlaces viejos. -->
<span id="actualizaciones"></span>
## Instalación y Actualizaciones
## Installación y actualizaciones
Se puede instalar NewPipe usando uno de los métodos siguientes:
1. Agregar nuestro repositorio personalizado a F-Droid e instalarlo desde allí. Las instrucciones están aquí: https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
2. Descargar el archivo APK del enlace [Github Releases](https://github.com/TeamNewPipe/NewPipe/releases) e instalarlo.
3. Actualizar a través de F-Droid. Este es el método más lento para obtener la actualización, como F-Droid debe reconocer cambios, construir el APK aparte, firmarlo con una clave, y finalmente empujar la actualización a los usuarios.
4. Construir un APK de depuración por si mismo. Este es el modo más rápido para realizar nuevas características en su dispositivo, pero es mucho más complicado, asi que recomendamos uno de los otros métodos.
Recomendamos el método 1 para la mayoría de usuarios. Los APKs instalados usando método 1 o 2 son compatibles el uno con el otro, pero no con las instalaciones usando método 3. Esta es debida a la misma clave digital (la nuestra), siendo utilizado en los métodos 1 y 2, pero una clave digital diferente (la de F-Droid) siendo utilizado en el método 3. Construir un APK de depuración usando método 4 excluye una clave enteramente. Firmando con claves digitales ayuda a asegurar de que un
usuario no esté engañado para instalar una actualización maliciosa a una app.
1. Agregando nuestro repositorio personalizado a F-Droid e instalarlo desde allí. Las instrucciones están [aquí](https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/).
2. Descargando el archivo APK de [aquí](https://github.com/TeamNewPipe/NewPipe/releases) y posteriormente instalarlo.
3. Usando el repositorio oficial de F-Droid. Este es el método más lento para obtener actualizaciones, ya que F-Droid debe reconocer los cambios, construir el APK aparte, firmarlo con una clave, y finalmente publicar la actualización.
4. Construyendo la app usted mismo. Este es el modo más rápido para obtener nuevas características en su dispositivo, pero es mucho más complicado, así que recomendamos uno de los otros métodos.
Mientras tanto, si quiere cambiar los fuentes por alguna razón (por ejemplo, la funcionalidad del nucleo de NewPipe se rompe y F-Droid aun no tiene la actualización), recomendamos el siguiente procedimiento:
1. Repaldear sus datos a través de Ajustes > Contenido > Exporta base de datos para guardar su historia, subscripciones, y listas de reproducción
2. Desinstalar NewPipe
3. Descargar el APK del nuevo fuente e instalarlo.
4. Importar los datos del paso 1 a través de Ajustes > Contenido > Importa base de datos.
Recomendamos el método 1 para la mayoría de usuarios. Los APKs instalados usando método 1 y 2 son compatibles entre sí, pero no lo son con los instalados usando el método 3. Esto es debido a la clave de firmado, ya que los métodos 1 y 2 usan la misma clave (la nuestra), pero el método 3 usa una clave diferente (la de F-Droid). El método 4 excluye totalmente una clave de firmado. Las claves de firmado aseguran que el usuario no esté siendo engañado para instalar/actualizar una APK maliciosa.
Además, si quiere cambiar el método de instalación por alguna razón (por ejemplo: la funcionalidad del núcleo de NewPipe se rompe o F-Droid aún no publica la actualización), recomendamos el siguiente procedimiento:
1. Respalde su información a través de Ajustes > Contenido > Exportar base de datos; esto guardará su historial (videos vistos y búsquedas), suscripciones, listas de reproducción y ajustes.
2. Desinstale NewPipe.
3. Descargue el APK con un método distinto e instálelo.
4. Importe la información (la base de datos extraída del paso 1) a través de Ajustes > Contenido > Importar base de datos. Tenga en cuenta que esta opción superpondrá su historial actual (tanto de vídeos como de búsquedas), sus listas de reproducción y (opcionalmente) sus configuraciones.
## Contribución
Si tiene ideas, traducciónes, cambios de diseño, limpieza de código, o cambios grandes de código, su ayuda es siempre bienvenida.
Cuanto más realizamos, mejor se pone la aplicación!
Si tiene ideas, traducciones, cambios de diseño, limpieza de código o cambios grandes de código, su ayuda es siempre bienvenida. ¡Cuanto más hagamos, NewPipe será mucho mejor!
Si quiere involucrarse, fíjese en nuestras [notas de contribución](.github/CONTRIBUTING.md).
<a href="https://hosted.weblate.org/engage/newpipe/es/">
<img src="https://hosted.weblate.org/widgets/newpipe/es/287x66-grey.png" alt="Estado de la traducción" />
<img src="https://hosted.weblate.org/widgets/newpipe/es/287x66-grey.png" alt="Estado de la Traducción" />
</a>
## Donar
Si le gusta el NewPipe estaremos felices con una donación. O puede enviar bitcoin o donar a través de Bountysource o Liberapay. Para obtener más información sobre como donar a NewPipe, por favor visita nuestro [sitio web](https://newpipe.net/donate).
Si te gusta NewPipe, estaremos felices con una donación. Puede enviar bitcoin o donar a través de Bountysource o Liberapay. Visita nuestro [sitio web](https://newpipe.net/donate) para más información.
<table>
<tr>
<td><img src="https://bitcoin.org/img/icons/logotop.svg" alt="Bitcoin"></td>
<td><img src="assets/bitcoin_qr_code.png" alt="Bitcoin QR code" width="100px"></td>
<td><img src="assets/bitcoin_qr_code.png" alt="Código QR del Bitcoin" width="100px"></td>
<td><samp>16A9J59ahMRqkLSZjhYj33n9j3fMztFxnh</samp></td>
</tr>
<tr>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="https://upload.wikimedia.org/wikipedia/commons/2/27/Liberapay_logo_v2_white-on-yellow.svg" alt="Liberapay" width="80px" ></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="assets/liberapay_qr_code.png" alt="Visit NewPipe at liberapay.com" width="100px"></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/donate"><img src="assets/liberapay_donate_button.svg" alt="Donate via Liberapay" height="35px"></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/"><img src="assets/liberapay_qr_code.png" alt="Visita NewPipe en liberapay.com" width="100px"></a></td>
<td><a href="https://liberapay.com/TeamNewPipe/donate"><img src="assets/liberapay_donate_button.svg" alt="Dona vía Liberapay" height="35px"></a></td>
</tr>
<tr>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Bountysource.png/320px-Bountysource.png" alt="Bountysource" width="190px"></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="assets/bountysource_qr_code.png" alt="Visit NewPipe at bountysource.com" width="100px"></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe/issues"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f" height="30px" alt="Check out how many bounties you can earn."></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe"><img src="assets/bountysource_qr_code.png" alt="Visita NewPipe en bountysource.com" width="100px"></a></td>
<td><a href="https://www.bountysource.com/teams/newpipe/issues"><img src="https://img.shields.io/bountysource/team/newpipe/activity.svg?colorB=cd201f" height="30px" alt="Revisa cuántas recompensas puedes obtener."></a></td>
</tr>
</table>
## Política de privacidad
El proyecto NewPipe tiene como objetivo proveer una experience privada y anónima para usar servicios de medios web.
Por lo tanto, la app no colecciona ningunos datos sin su consentimiento. La politica de privacidad de NewPipe explica en detalle los datos enviados y almacenados cuando envia un informe de error, o comentario en nuestro blog. Puede encontrar el documento [aqui](https://newpipe.net/legal/privacy/).
## Política de Privacidad
El proyecto NewPipe tiene como objetivo ofrecer una experience privada y anónima al usar servicios web multimedia. Por lo tanto, la app no recoleta ningún tipo de información sin su consentimiento. La politica de privacidad de NewPipe explica en detalle qué información es enviada y almacenada cuando envía un informe de error o comenta en [nuestro blog](https://newpipe.net/blog/). Puede encontrar el documento [aquí](https://newpipe.net/legal/privacy/).
## Licencia
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](https://www.gnu.org/licenses/gpl-3.0.en.html)
NewPipe es Software Libre: Puede usar, estudiar, compartir, y mejorarlo a su voluntad. Especificamente puede redistribuir y/o modificarlo bajo los términos de la [GNU General Public License](https://www.gnu.org/licenses/gpl.html) como publicado por la Free Software Foundation, o versión 3 de la licencia, o (en su opción) cualquier versión posterior.
[![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)](https://www.gnu.org/licenses/gpl-3.0.html)
NewPipe es Software Libre: Puede usarlo, estudiarlo, compartirlo y mejorarlo a su voluntad. Más específicamente, puede redistribuirlo y/o modificarlo bajo los términos de la [GNU General Public License](https://www.gnu.org/licenses/gpl.html) publicada por la Free Software Foundation tanto si usa la versión 3 o posterior de la licencia.

View File

@@ -89,7 +89,7 @@ NewPipe 코드의 변경이 있을 때(기능 추가 또는 버그 수정으로
따라서 우리는 다른 방법들 중 하나를 사용하는 것을 추천합니다.
2. 우리의 커스텀 저장소를 F-Droid에 추가하고 우리가 릴리즈를 게시하는 대로 저곳에서 릴리즈를 설치할 수 있습니다.
이에 대한 설명서는 이곳에서 확인할 수 있습니다: https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
3. 우리가 릴리즈를 게시하는 대로 [Github Releases](https://github.com/TeamNewPipe/NewPipe/releases)에서 APK를 다운받고 이것을 설치할 수 있습니다.
3. 우리가 릴리즈를 게시하는 대로 [GitHub Releases](https://github.com/TeamNewPipe/NewPipe/releases)에서 APK를 다운받고 이것을 설치할 수 있습니다.
4. F-Droid를 통해 업데이트 할 수 있습니다. F-Droid는 변화를 인식하고, 스스로 APK를 생성하고, 이것에 서명하고, 사용자들에서 업데이트를 전달해야만 하기 때문에,
이것은 업데이트를 받는 가장 느린 방법입니다.

View File

@@ -89,7 +89,7 @@ NewPipe supports multiple services. Our [docs](https://teamnewpipe.github.io/doc
## Installation and updates
You can install NewPipe using one of the following methods:
1. Add our custom repo to F-Droid and install it from there. The instructions are here: https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
2. Download the APK from [Github Releases](https://github.com/TeamNewPipe/NewPipe/releases) and install it.
2. Download the APK from [GitHub Releases](https://github.com/TeamNewPipe/NewPipe/releases) and install it.
3. Update via F-Droid. This is the slowest method of getting updates, as F-Droid must recognize changes, build the APK itself, sign it, then push the update to users.
4. Build a debug APK yourself. This is the fastest way to get new features on your device, but is much more complicated, so we recommend using one of the other methods.

File diff suppressed because one or more lines are too long

View File

@@ -89,7 +89,7 @@ NewPipe suportă servicii multiple. [Documentele](https://teamnewpipe.github.io/
## Instalare şi actualizări
Puteţi instala NewPipe folosind una dintre următoarele metode:
1. Adăugaţi depozitul nostru F-droid personalizat. Instrucţiunile sunt aici: https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
2. Descărcaţi APK-ul din [Github Releases](https://github.com/TeamNewPipe/NewPipe/releases) şi instalaţi-l.
2. Descărcaţi APK-ul din [GitHub Releases](https://github.com/TeamNewPipe/NewPipe/releases) şi instalaţi-l.
3. Actualizaţi via F-Droid. Aceasta este cea mai lentă metodă de a obţine actualizări, deoarece F-Droid trebuie să recunoască schimbările, să constriască APK-ul, să îl semneze, iar apoi să îl trimită utilizatorilor.
4. Construiţi un APK de depanare. Aceasta este cea mai rapidă metodă de a primi funcţii noi, dar este mult mai complicată, aşa că vă recomandăm să folosiţi una dintre celelalte metode.

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@
<b>GOOGLE PLAY STORE'A NEWPIPE VEYA BAŞKA BİR KOPYASINI KOYMAK, PLAY STORE ŞARTLARINI VE KOŞULLARINI İHLAL EDER.</b>
## Ekran fotoğrafları
## Ekran görüntüleri
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_01.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_01.png)
[<img src="fastlane/metadata/android/en-US/images/phoneScreenshots/shot_02.png" width=160>](fastlane/metadata/android/en-US/images/phoneScreenshots/shot_02.png)
@@ -88,7 +88,7 @@ NewPipe birden fazla hizmeti destekler. Uygulamaya ve ayıklayıcıya yeni bir h
## Kurulum ve güncellemeler
Aşağıdaki yöntemlerden birini kullanarak NewPipe'ı kurabilirsiniz:
1. Özel depomuzu F-Droid'e ekleyin ve oradan yükleyin. Kılavuzu şurada bulabilirsiniz: https://newpipe.net/FAQ/tutorials/install-add-fdroid-repo/
2. APK'yı [Github sürümlerinden](https://github.com/TeamNewPipe/NewPipe/releases) indirin ve kurun.
2. APK'yı [GitHub sürümlerinden](https://github.com/TeamNewPipe/NewPipe/releases) indirin ve kurun.
3. F-Droid ile güncelleyin. Bu, güncellemeleri almanın en yavaş yöntemidir, çünkü F-Droid değişiklikleri tanımalı, APK'yı kendisi oluşturmalı, imzalamalı ve ardından güncellemeyi kullanıcılara dağıtmalıdır.
4. Kendiniz bir APK derleyin. Bu yöntem, cihazınızda yeni özellikler edinmenin en hızlı yoludur, ancak çok daha karmaşıktır, bu nedenle diğer yöntemlerden birini kullanmanızı öneririz.

3
app/.gitignore vendored
View File

@@ -1,3 +0,0 @@
.gitignore
/build
*.iml

View File

@@ -4,21 +4,21 @@ plugins {
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-parcelize'
apply plugin: 'kotlin-kapt'
apply plugin: 'checkstyle'
android {
compileSdkVersion 29
buildToolsVersion '29.0.3'
compileSdkVersion 30
buildToolsVersion '30.0.3'
defaultConfig {
applicationId "org.schabi.newpipe"
resValue "string", "app_name", "NewPipe"
minSdkVersion 19
targetSdkVersion 29
versionCode 974
versionName "0.21.8"
versionCode 982
versionName "0.21.16"
multiDexEnabled true
@@ -54,6 +54,11 @@ android {
// debug build. This seems to be a Gradle bug, therefore
// TODO: update Gradle version
release {
if (System.properties.containsKey('packageSuffix')) {
applicationIdSuffix System.getProperty('packageSuffix')
resValue "string", "app_name", "NewPipe " + System.getProperty('packageSuffix')
archivesBaseName = 'NewPipe_' + System.getProperty('packageSuffix')
}
minifyEnabled true
shrinkResources false // disabled to fix F-Droid's reproducible build
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@@ -84,11 +89,6 @@ android {
jvmTarget = JavaVersion.VERSION_1_8
}
// Required and used only by groupie
androidExtensions {
experimental = true
}
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
@@ -101,17 +101,17 @@ android {
ext {
checkstyleVersion = '8.38'
androidxLifecycleVersion = '2.2.0'
androidxLifecycleVersion = '2.3.1'
androidxRoomVersion = '2.3.0'
icepickVersion = '3.2.0'
exoPlayerVersion = '2.12.3'
googleAutoServiceVersion = '1.0-rc7'
groupieVersion = '2.8.1'
markwonVersion = '4.6.0'
exoPlayerVersion = '2.14.2'
googleAutoServiceVersion = '1.0'
groupieVersion = '2.10.0'
markwonVersion = '4.6.2'
leakCanaryVersion = '2.5'
stethoVersion = '1.5.1'
stethoVersion = '1.6.0'
mockitoVersion = '3.6.0'
}
@@ -121,7 +121,7 @@ configurations {
}
checkstyle {
configDir rootProject.file(".")
getConfigDirectory().set(rootProject.file("."))
ignoreFailures false
showViolations true
toolVersion = checkstyleVersion
@@ -140,8 +140,8 @@ task runCheckstyle(type: Checkstyle) {
showViolations true
reports {
xml.enabled true
html.enabled true
xml.getRequired().set(true)
html.getRequired().set(true)
}
}
@@ -151,7 +151,7 @@ def inputFiles = project.fileTree(dir: "src", include: "**/*.kt")
task runKtlint(type: JavaExec) {
inputs.files(inputFiles)
outputs.dir(outputDir)
main = "com.pinterest.ktlint.Main"
getMainClass().set("com.pinterest.ktlint.Main")
classpath = configurations.ktlint
args "src/**/*.kt"
}
@@ -159,13 +159,16 @@ task runKtlint(type: JavaExec) {
task formatKtlint(type: JavaExec) {
inputs.files(inputFiles)
outputs.dir(outputDir)
main = "com.pinterest.ktlint.Main"
getMainClass().set("com.pinterest.ktlint.Main")
classpath = configurations.ktlint
args "-F", "src/**/*.kt"
}
afterEvaluate {
preDebugBuild.dependsOn formatKtlint, runCheckstyle, runKtlint
if (!System.properties.containsKey('skipFormatKtlint')) {
preDebugBuild.dependsOn formatKtlint
}
preDebugBuild.dependsOn runCheckstyle, runKtlint
}
sonarqube {
@@ -186,7 +189,7 @@ dependencies {
// name and the commit hash with the commit hash of the (pushed) commit you want to test
// This works thanks to JitPack: https://jitpack.io/
implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.21.8'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.21.13'
/** Checkstyle **/
checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}"
@@ -196,23 +199,26 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
/** AndroidX **/
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.core:core-ktx:1.6.0'
implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'androidx.fragment:fragment-ktx:1.3.5'
implementation 'androidx.fragment:fragment-ktx:1.3.6'
implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.media:media:1.2.1'
implementation 'androidx.media:media:1.4.3'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.preference:preference:1.1.1'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation "androidx.room:room-runtime:${androidxRoomVersion}"
implementation "androidx.room:room-rxjava3:${androidxRoomVersion}"
kapt "androidx.room:room-compiler:${androidxRoomVersion}"
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
// Newer version specified to prevent accessibility regressions with RecyclerView, see:
// https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
implementation 'androidx.webkit:webkit:1.4.0'
implementation 'com.google.android.material:material:1.2.1'
@@ -237,13 +243,14 @@ dependencies {
kapt "com.google.auto.service:auto-service:${googleAutoServiceVersion}"
// Manager for complex RecyclerView layouts
implementation "com.xwray:groupie:${groupieVersion}"
implementation "com.xwray:groupie-viewbinding:${groupieVersion}"
implementation "com.github.lisawray.groupie:groupie:${groupieVersion}"
implementation "com.github.lisawray.groupie:groupie-viewbinding:${groupieVersion}"
// Circular ImageView
implementation "de.hdodenhof:circleimageview:3.1.0"
// Image loading
implementation "com.nostra13.universalimageloader:universal-image-loader:1.9.5"
//noinspection GradleDependency --> 2.8 is the last version, not 2.71828!
implementation "com.squareup.picasso:picasso:2.8"
// Markdown library for Android
implementation "io.noties.markwon:core:${markwonVersion}"
@@ -255,6 +262,9 @@ dependencies {
// Crash reporting
implementation "ch.acra:acra-core:5.7.0"
// Properly restarting
implementation 'com.jakewharton:process-phoenix:2.1.2'
// Reactive extensions for Java VM
implementation "io.reactivex.rxjava3:rxjava:3.0.7"
implementation "io.reactivex.rxjava3:rxandroid:3.0.0"

File diff suppressed because it is too large Load Diff

View File

@@ -1,134 +0,0 @@
package org.schabi.newpipe.database
import android.content.ContentValues
import android.database.sqlite.SQLiteDatabase
import androidx.room.Room
import androidx.room.testing.MigrationTestHelper
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.schabi.newpipe.extractor.stream.StreamType
@RunWith(AndroidJUnit4::class)
class AppDatabaseTest {
companion object {
private const val DEFAULT_SERVICE_ID = 0
private const val DEFAULT_URL = "https://www.youtube.com/watch?v=cDphUib5iG4"
private const val DEFAULT_TITLE = "Test Title"
private val DEFAULT_TYPE = StreamType.VIDEO_STREAM
private const val DEFAULT_DURATION = 480L
private const val DEFAULT_UPLOADER_NAME = "Uploader Test"
private const val DEFAULT_THUMBNAIL = "https://example.com/example.jpg"
private const val DEFAULT_SECOND_SERVICE_ID = 0
private const val DEFAULT_SECOND_URL = "https://www.youtube.com/watch?v=ncQU6iBn5Fc"
}
@get:Rule
val testHelper = MigrationTestHelper(
InstrumentationRegistry.getInstrumentation(),
AppDatabase::class.java.canonicalName, FrameworkSQLiteOpenHelperFactory()
)
@Test
fun migrateDatabaseFrom2to3() {
val databaseInV2 = testHelper.createDatabase(AppDatabase.DATABASE_NAME, Migrations.DB_VER_2)
databaseInV2.run {
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
// put("uid", null)
put("service_id", DEFAULT_SERVICE_ID)
put("url", DEFAULT_URL)
put("title", DEFAULT_TITLE)
put("stream_type", DEFAULT_TYPE.name)
put("duration", DEFAULT_DURATION)
put("uploader", DEFAULT_UPLOADER_NAME)
put("thumbnail_url", DEFAULT_THUMBNAIL)
}
)
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
// put("uid", null)
put("service_id", DEFAULT_SECOND_SERVICE_ID)
put("url", DEFAULT_SECOND_URL)
// put("title", null)
// put("stream_type", null)
// put("duration", null)
// put("uploader", null)
// put("thumbnail_url", null)
}
)
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
// put("uid", null)
put("service_id", DEFAULT_SERVICE_ID)
// put("url", null)
// put("title", null)
// put("stream_type", null)
// put("duration", null)
// put("uploader", null)
// put("thumbnail_url", null)
}
)
close()
}
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME, Migrations.DB_VER_3,
true, Migrations.MIGRATION_2_3
)
val migratedDatabaseV3 = getMigratedDatabase()
val listFromDB = migratedDatabaseV3.streamDAO().all.blockingFirst()
// Only expect 2, the one with the null url will be ignored
assertEquals(2, listFromDB.size)
val streamFromMigratedDatabase = listFromDB[0]
assertEquals(DEFAULT_SERVICE_ID, streamFromMigratedDatabase.serviceId)
assertEquals(DEFAULT_URL, streamFromMigratedDatabase.url)
assertEquals(DEFAULT_TITLE, streamFromMigratedDatabase.title)
assertEquals(DEFAULT_TYPE, streamFromMigratedDatabase.streamType)
assertEquals(DEFAULT_DURATION, streamFromMigratedDatabase.duration)
assertEquals(DEFAULT_UPLOADER_NAME, streamFromMigratedDatabase.uploader)
assertEquals(DEFAULT_THUMBNAIL, streamFromMigratedDatabase.thumbnailUrl)
assertNull(streamFromMigratedDatabase.viewCount)
assertNull(streamFromMigratedDatabase.textualUploadDate)
assertNull(streamFromMigratedDatabase.uploadDate)
assertNull(streamFromMigratedDatabase.isUploadDateApproximation)
val secondStreamFromMigratedDatabase = listFromDB[1]
assertEquals(DEFAULT_SECOND_SERVICE_ID, secondStreamFromMigratedDatabase.serviceId)
assertEquals(DEFAULT_SECOND_URL, secondStreamFromMigratedDatabase.url)
assertEquals("", secondStreamFromMigratedDatabase.title)
// Should fallback to VIDEO_STREAM
assertEquals(StreamType.VIDEO_STREAM, secondStreamFromMigratedDatabase.streamType)
assertEquals(0, secondStreamFromMigratedDatabase.duration)
assertEquals("", secondStreamFromMigratedDatabase.uploader)
assertEquals("", secondStreamFromMigratedDatabase.thumbnailUrl)
assertNull(secondStreamFromMigratedDatabase.viewCount)
assertNull(secondStreamFromMigratedDatabase.textualUploadDate)
assertNull(secondStreamFromMigratedDatabase.uploadDate)
assertNull(secondStreamFromMigratedDatabase.isUploadDateApproximation)
}
private fun getMigratedDatabase(): AppDatabase {
val database: AppDatabase = Room.databaseBuilder(
ApplicationProvider.getApplicationContext(),
AppDatabase::class.java, AppDatabase.DATABASE_NAME
)
.build()
testHelper.closeWhenFinished(database)
return database
}
}

View File

@@ -0,0 +1,89 @@
package org.schabi.newpipe.local.playlist
import androidx.room.Room
import androidx.test.core.app.ApplicationProvider
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.TrampolineSchedulerRule
import java.util.concurrent.TimeUnit
class LocalPlaylistManagerTest {
private lateinit var manager: LocalPlaylistManager
private lateinit var database: AppDatabase
@get:Rule
val trampolineScheduler = TrampolineSchedulerRule()
@get:Rule
val timeout = Timeout(10, TimeUnit.SECONDS)
@Before
fun setup() {
database = Room.inMemoryDatabaseBuilder(
ApplicationProvider.getApplicationContext(),
AppDatabase::class.java
)
.allowMainThreadQueries()
.build()
manager = LocalPlaylistManager(database)
}
@After
fun cleanUp() {
database.close()
}
@Test
fun createPlaylist() {
val NEWPIPE_URL = "https://newpipe.net/"
val stream = StreamEntity(
serviceId = 1, url = NEWPIPE_URL, title = "title",
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
uploaderUrl = NEWPIPE_URL
)
val result = manager.createPlaylist("name", listOf(stream))
// This should not behave like this.
// Currently list of all stream ids is returned instead of playlist id
result.test().await().assertValue(listOf(1L))
}
@Test
fun createPlaylist_emptyPlaylistMustReturnEmpty() {
val result = manager.createPlaylist("name", emptyList())
// This should not behave like this.
// It should throw an error because currently the result is null
result.test().await().assertComplete()
manager.playlists.test().awaitCount(1).assertValue(emptyList())
}
@Test()
fun createPlaylist_nonExistentStreamsAreUpserted() {
val stream = StreamEntity(
serviceId = 1, url = "https://newpipe.net/", title = "title",
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
uploaderUrl = "https://newpipe.net/"
)
database.streamDAO().insert(stream)
val upserted = StreamEntity(
serviceId = 1, url = "https://newpipe.net/2", title = "title2",
streamType = StreamType.VIDEO_STREAM, duration = 1, uploader = "uploader",
uploaderUrl = "https://newpipe.net/"
)
val result = manager.createPlaylist("name", listOf(stream, upserted))
result.test().await().assertComplete()
database.streamDAO().all.test().awaitCount(1).assertValue(listOf(stream, upserted))
}
}

View File

@@ -0,0 +1,37 @@
package org.schabi.newpipe.testUtil
import io.reactivex.rxjava3.android.plugins.RxAndroidPlugins
import io.reactivex.rxjava3.plugins.RxJavaPlugins
import io.reactivex.rxjava3.schedulers.Schedulers
import org.junit.rules.TestRule
import org.junit.runner.Description
import org.junit.runners.model.Statement
/**
* Always run on [Schedulers.trampoline].
* This executes the task in the current thread in FIFO manner.
* This ensures that tasks are run quickly inside the tests
* and not scheduled away to another thread for later execution
*/
class TrampolineSchedulerRule : TestRule {
private val scheduler = Schedulers.trampoline()
override fun apply(base: Statement, description: Description): Statement =
object : Statement() {
override fun evaluate() {
try {
RxJavaPlugins.setComputationSchedulerHandler { scheduler }
RxJavaPlugins.setIoSchedulerHandler { scheduler }
RxJavaPlugins.setNewThreadSchedulerHandler { scheduler }
RxJavaPlugins.setSingleSchedulerHandler { scheduler }
RxAndroidPlugins.setInitMainThreadSchedulerHandler { scheduler }
base.evaluate()
} finally {
RxJavaPlugins.reset()
RxAndroidPlugins.reset()
}
}
}
}

View File

@@ -5,6 +5,7 @@ import android.os.Bundle;
import androidx.preference.Preference;
import org.schabi.newpipe.R;
import org.schabi.newpipe.util.PicassoHelper;
import leakcanary.LeakCanary;
@@ -15,10 +16,13 @@ public class DebugSettingsFragment extends BasePreferenceFragment {
final Preference showMemoryLeaksPreference
= findPreference(getString(R.string.show_memory_leaks_key));
final Preference showImageIndicatorsPreference
= findPreference(getString(R.string.show_image_indicators_key));
final Preference crashTheAppPreference
= findPreference(getString(R.string.crash_the_app_key));
assert showMemoryLeaksPreference != null;
assert showImageIndicatorsPreference != null;
assert crashTheAppPreference != null;
showMemoryLeaksPreference.setOnPreferenceClickListener(preference -> {
@@ -26,6 +30,11 @@ public class DebugSettingsFragment extends BasePreferenceFragment {
return true;
});
showImageIndicatorsPreference.setOnPreferenceChangeListener((preference, newValue) -> {
PicassoHelper.setIndicatorsEnabled((Boolean) newValue);
return true;
});
crashTheAppPreference.setOnPreferenceClickListener(preference -> {
throw new RuntimeException();
});

View File

@@ -146,6 +146,7 @@
<data android:pathPrefix="/embed/" />
<data android:pathPrefix="/watch" />
<data android:pathPrefix="/attribution_link" />
<data android:pathPrefix="/shorts/" />
<!-- channel prefix -->
<data android:pathPrefix="/channel/" />
<data android:pathPrefix="/user/" />
@@ -224,6 +225,7 @@
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="tubus.eduvid.org" />
<data android:host="invidio.us" />
<data android:host="dev.invidio.us" />
<data android:host="www.invidio.us" />
@@ -254,6 +256,21 @@
<data android:pathPrefix="/" />
</intent-filter>
<!-- y2u.be filter -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="y2u.be" />
<data android:pathPrefix="/" />
</intent-filter>
<!-- Soundcloud filter -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
@@ -309,6 +326,7 @@
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="eduvid.org" />
<data android:host="framatube.org" />
<data android:host="media.assassinate-you.net" />
<data android:host="peertube.co.uk" />
@@ -322,8 +340,12 @@
<data android:host="skeptikon.fr" />
<data android:pathPrefix="/videos/" /> <!-- it contains playlists -->
<data android:pathPrefix="/w/" /> <!-- short video URLs -->
<data android:pathPrefix="/w/p/" /> <!-- short playlist URLs -->
<data android:pathPrefix="/accounts/" />
<data android:pathPrefix="/a/" /> <!-- short account URLs -->
<data android:pathPrefix="/video-channels/" />
<data android:pathPrefix="/c/" /> <!-- short video-channels URLs -->
</intent-filter>
<!-- Bandcamp filter for tracks, albums and playlists -->
@@ -358,6 +380,9 @@
<service
android:name=".RouterActivity$FetcherService"
android:exported="false" />
<service
android:name=".CheckForNewAppVersion"
android:exported="false" />
<!-- opting out of sending metrics to Google in Android System WebView -->
<meta-data android:name="android.webkit.WebView.MetricsOptOut" android:value="true" />

View File

@@ -51,8 +51,12 @@ import java.util.ArrayList;
* <li>{@link #saveState()}</li>
* <li>{@link #restoreState(Parcelable, ClassLoader)}</li>
* </ul>
*
* @deprecated Switch to {@link androidx.viewpager2.widget.ViewPager2} and use
* {@link androidx.viewpager2.adapter.FragmentStateAdapter} instead.
*/
@SuppressWarnings("deprecation")
@Deprecated
public abstract class FragmentStatePagerAdapterMenuWorkaround extends PagerAdapter {
private static final String TAG = "FragmentStatePagerAdapt";
private static final boolean DEBUG = false;
@@ -86,9 +90,10 @@ public abstract class FragmentStatePagerAdapterMenuWorkaround extends PagerAdapt
private final int mBehavior;
private FragmentTransaction mCurTransaction = null;
private final ArrayList<Fragment.SavedState> mSavedState = new ArrayList<Fragment.SavedState>();
private final ArrayList<Fragment> mFragments = new ArrayList<Fragment>();
private final ArrayList<Fragment.SavedState> mSavedState = new ArrayList<>();
private final ArrayList<Fragment> mFragments = new ArrayList<>();
private Fragment mCurrentPrimaryItem = null;
private boolean mExecutingFinishUpdate;
/**
* Constructor for {@link FragmentStatePagerAdapterMenuWorkaround}
@@ -208,7 +213,7 @@ public abstract class FragmentStatePagerAdapterMenuWorkaround extends PagerAdapt
mFragments.set(position, null);
mCurTransaction.remove(fragment);
if (fragment == mCurrentPrimaryItem) {
if (fragment.equals(mCurrentPrimaryItem)) {
mCurrentPrimaryItem = null;
}
}
@@ -247,7 +252,19 @@ public abstract class FragmentStatePagerAdapterMenuWorkaround extends PagerAdapt
@Override
public void finishUpdate(@NonNull final ViewGroup container) {
if (mCurTransaction != null) {
mCurTransaction.commitNowAllowingStateLoss();
// We drop any transactions that attempt to be committed
// from a re-entrant call to finishUpdate(). We need to
// do this as a workaround for Robolectric running measure/layout
// calls inline rather than allowing them to be posted
// as they would on a real device.
if (!mExecutingFinishUpdate) {
try {
mExecutingFinishUpdate = true;
mCurTransaction.commitNowAllowingStateLoss();
} finally {
mExecutingFinishUpdate = false;
}
}
mCurTransaction = null;
}
}

View File

@@ -1,20 +1,16 @@
package org.schabi.newpipe;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationChannelCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.multidex.MultiDexApplication;
import androidx.preference.PreferenceManager;
import com.nostra13.universalimageloader.cache.memory.impl.LRULimitedMemoryCache;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.jakewharton.processphoenix.ProcessPhoenix;
import org.acra.ACRA;
import org.acra.config.ACRAConfigurationException;
@@ -29,6 +25,7 @@ import org.schabi.newpipe.extractor.downloader.Downloader;
import org.schabi.newpipe.ktx.ExceptionUtils;
import org.schabi.newpipe.settings.NewPipeSettings;
import org.schabi.newpipe.util.Localization;
import org.schabi.newpipe.util.PicassoHelper;
import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.util.StateSaver;
@@ -39,7 +36,6 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.exceptions.CompositeException;
import io.reactivex.rxjava3.exceptions.MissingBackpressureException;
import io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException;
@@ -66,12 +62,9 @@ import io.reactivex.rxjava3.plugins.RxJavaPlugins;
*/
public class App extends MultiDexApplication {
protected static final String TAG = App.class.toString();
private static App app;
public static final String PACKAGE_NAME = BuildConfig.APPLICATION_ID;
@Nullable
private Disposable disposable = null;
private static final String TAG = App.class.toString();
private static App app;
@NonNull
public static App getApp() {
@@ -90,6 +83,12 @@ public class App extends MultiDexApplication {
app = this;
if (ProcessPhoenix.isPhoenixProcess(this)) {
Log.i(TAG, "This is a phoenix process! "
+ "Aborting initialization of App[onCreate]");
return;
}
// Initialize settings first because others inits can use its values
NewPipeSettings.initSettings(this);
@@ -104,20 +103,20 @@ public class App extends MultiDexApplication {
ServiceHelper.initServices(this);
// Initialize image loader
ImageLoader.getInstance().init(getImageLoaderConfigurations(10, 50));
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
PicassoHelper.init(this);
PicassoHelper.setShouldLoadImages(
prefs.getBoolean(getString(R.string.download_thumbnail_key), true));
PicassoHelper.setIndicatorsEnabled(MainActivity.DEBUG
&& prefs.getBoolean(getString(R.string.show_image_indicators_key), false));
configureRxJavaErrorHandler();
// Check for new version
disposable = CheckForNewAppVersion.checkNewVersion(this);
}
@Override
public void onTerminate() {
if (disposable != null) {
disposable.dispose();
}
super.onTerminate();
PicassoHelper.terminate();
}
protected Downloader getDownloader() {
@@ -202,15 +201,6 @@ public class App extends MultiDexApplication {
});
}
private ImageLoaderConfiguration getImageLoaderConfigurations(final int memoryCacheSizeMb,
final int diskCacheSizeMb) {
return new ImageLoaderConfiguration.Builder(this)
.memoryCache(new LRULimitedMemoryCache(memoryCacheSizeMb * 1024 * 1024))
.diskCacheSize(diskCacheSizeMb * 1024 * 1024)
.imageDownloader(new ImageDownloader(getApplicationContext()))
.build();
}
/**
* Called in {@link #attachBaseContext(Context)} after calling the {@code super} method.
* Should be overridden if MultiDex is enabled, since it has to be initialized before ACRA.
@@ -233,42 +223,36 @@ public class App extends MultiDexApplication {
}
private void initNotificationChannels() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
return;
}
// Keep the importance below DEFAULT to avoid making noise on every notification update for
// the main and update channels
final NotificationChannelCompat mainChannel = new NotificationChannelCompat
.Builder(getString(R.string.notification_channel_id),
NotificationManagerCompat.IMPORTANCE_LOW)
.setName(getString(R.string.notification_channel_name))
.setDescription(getString(R.string.notification_channel_description))
.build();
String id = getString(R.string.notification_channel_id);
String name = getString(R.string.notification_channel_name);
String description = getString(R.string.notification_channel_description);
final NotificationChannelCompat appUpdateChannel = new NotificationChannelCompat
.Builder(getString(R.string.app_update_notification_channel_id),
NotificationManagerCompat.IMPORTANCE_LOW)
.setName(getString(R.string.app_update_notification_channel_name))
.setDescription(getString(R.string.app_update_notification_channel_description))
.build();
// Keep this below DEFAULT to avoid making noise on every notification update for the main
// and update channels
int importance = NotificationManager.IMPORTANCE_LOW;
final NotificationChannelCompat hashChannel = new NotificationChannelCompat
.Builder(getString(R.string.hash_channel_id),
NotificationManagerCompat.IMPORTANCE_HIGH)
.setName(getString(R.string.hash_channel_name))
.setDescription(getString(R.string.hash_channel_description))
.build();
final NotificationChannel mainChannel = new NotificationChannel(id, name, importance);
mainChannel.setDescription(description);
id = getString(R.string.app_update_notification_channel_id);
name = getString(R.string.app_update_notification_channel_name);
description = getString(R.string.app_update_notification_channel_description);
final NotificationChannel appUpdateChannel = new NotificationChannel(id, name, importance);
appUpdateChannel.setDescription(description);
id = getString(R.string.hash_channel_id);
name = getString(R.string.hash_channel_name);
description = getString(R.string.hash_channel_description);
importance = NotificationManager.IMPORTANCE_HIGH;
final NotificationChannel hashChannel = new NotificationChannel(id, name, importance);
hashChannel.setDescription(description);
final NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannels(Arrays.asList(mainChannel,
final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.createNotificationChannelsCompat(Arrays.asList(mainChannel,
appUpdateChannel, hashChannel));
}
protected boolean isDisposedRxExceptionsReported() {
return false;
}
}

View File

@@ -10,21 +10,17 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import com.nostra13.universalimageloader.core.ImageLoader;
import icepick.Icepick;
import icepick.State;
import leakcanary.AppWatcher;
public abstract class BaseFragment extends Fragment {
public static final ImageLoader IMAGE_LOADER = ImageLoader.getInstance();
protected final String TAG = getClass().getSimpleName() + "@" + Integer.toHexString(hashCode());
protected final boolean DEBUG = MainActivity.DEBUG;
protected static final boolean DEBUG = MainActivity.DEBUG;
protected AppCompatActivity activity;
//These values are used for controlling fragments when they are part of the frontpage
@State
protected boolean useAsFrontPage = false;
private boolean mIsVisibleToUser = false;
public void useAsFrontPage(final boolean value) {
useAsFrontPage = value;
@@ -88,12 +84,6 @@ public abstract class BaseFragment extends Fragment {
AppWatcher.INSTANCE.getObjectWatcher().watch(this);
}
@Override
public void setUserVisibleHint(final boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
mIsVisibleToUser = isVisibleToUser;
}
/*//////////////////////////////////////////////////////////////////////////
// Init
//////////////////////////////////////////////////////////////////////////*/
@@ -112,8 +102,7 @@ public abstract class BaseFragment extends Fragment {
if (DEBUG) {
Log.d(TAG, "setTitle() called with: title = [" + title + "]");
}
if ((!useAsFrontPage || mIsVisibleToUser)
&& (activity != null && activity.getSupportActionBar() != null)) {
if (!useAsFrontPage && activity != null && activity.getSupportActionBar() != null) {
activity.getSupportActionBar().setDisplayShowTitleEnabled(true);
activity.getSupportActionBar().setTitle(title);
}

View File

@@ -17,7 +17,6 @@ import org.schabi.newpipe.util.InfoCache;
import org.schabi.newpipe.util.TLSSocketFactoryCompat;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
@@ -194,36 +193,6 @@ public final class DownloaderImpl extends Downloader {
}
}
public InputStream stream(final String siteUrl) throws IOException {
try {
final okhttp3.Request.Builder requestBuilder = new okhttp3.Request.Builder()
.method("GET", null).url(siteUrl)
.addHeader("User-Agent", USER_AGENT);
final String cookies = getCookies(siteUrl);
if (!cookies.isEmpty()) {
requestBuilder.addHeader("Cookie", cookies);
}
final okhttp3.Request request = requestBuilder.build();
final okhttp3.Response response = client.newCall(request).execute();
final ResponseBody body = response.body();
if (response.code() == 429) {
throw new ReCaptchaException("reCaptcha Challenge requested", siteUrl);
}
if (body == null) {
response.close();
return null;
}
return body.byteStream();
} catch (final ReCaptchaException e) {
throw new IOException(e.getMessage(), e.getCause());
}
}
@Override
public Response execute(@NonNull final Request request)
throws IOException, ReCaptchaException {

View File

@@ -1,48 +0,0 @@
package org.schabi.newpipe;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import androidx.preference.PreferenceManager;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import org.schabi.newpipe.extractor.NewPipe;
import java.io.IOException;
import java.io.InputStream;
public class ImageDownloader extends BaseImageDownloader {
private final Resources resources;
private final SharedPreferences preferences;
private final String downloadThumbnailKey;
public ImageDownloader(final Context context) {
super(context);
this.resources = context.getResources();
this.preferences = PreferenceManager.getDefaultSharedPreferences(context);
this.downloadThumbnailKey = context.getString(R.string.download_thumbnail_key);
}
private boolean isDownloadingThumbnail() {
return preferences.getBoolean(downloadThumbnailKey, true);
}
@SuppressLint("ResourceType")
@Override
public InputStream getStream(final String imageUri, final Object extra) throws IOException {
if (isDownloadingThumbnail()) {
return super.getStream(imageUri, extra);
} else {
return resources.openRawResource(R.drawable.dummy_thumbnail_dark);
}
}
protected InputStream getStreamFromNetwork(final String imageUri, final Object extra)
throws IOException {
final DownloaderImpl downloader = (DownloaderImpl) NewPipe.getDownloader();
return downloader.stream(imageUri);
}
}

View File

@@ -20,6 +20,9 @@
package org.schabi.newpipe;
import static org.schabi.newpipe.CheckForNewAppVersion.startNewVersionCheckService;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -91,8 +94,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@SuppressWarnings("ConstantConditions")
@@ -165,7 +166,57 @@ public class MainActivity extends AppCompatActivity {
openMiniPlayerUponPlayerStarted();
}
private void setupDrawer() throws Exception {
@Override
protected void onPostCreate(final Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
final App app = App.getApp();
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(app);
if (prefs.getBoolean(app.getString(R.string.update_app_key), true)) {
// Start the service which is checking all conditions
// and eventually searching for a new version.
// The service searching for a new NewPipe version must not be started in background.
startNewVersionCheckService();
}
}
private void setupDrawer() throws ExtractionException {
addDrawerMenuForCurrentService();
toggle = new ActionBarDrawerToggle(this, mainBinding.getRoot(),
toolbarLayoutBinding.toolbar, R.string.drawer_open, R.string.drawer_close);
toggle.syncState();
mainBinding.getRoot().addDrawerListener(toggle);
mainBinding.getRoot().addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
private int lastService;
@Override
public void onDrawerOpened(final View drawerView) {
lastService = ServiceHelper.getSelectedServiceId(MainActivity.this);
}
@Override
public void onDrawerClosed(final View drawerView) {
if (servicesShown) {
toggleServices();
}
if (lastService != ServiceHelper.getSelectedServiceId(MainActivity.this)) {
ActivityCompat.recreate(MainActivity.this);
}
}
});
drawerLayoutBinding.navigation.setNavigationItemSelectedListener(this::drawerItemSelected);
setupDrawerHeader();
}
/**
* Builds the drawer menu for the current service.
*
* @throws ExtractionException
*/
private void addDrawerMenuForCurrentService() throws ExtractionException {
//Tabs
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
final StreamingService service = NewPipe.getService(currentServiceId);
@@ -204,32 +255,6 @@ public class MainActivity extends AppCompatActivity {
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_options_about_group, ITEM_ID_ABOUT, ORDER, R.string.tab_about)
.setIcon(R.drawable.ic_info_outline);
toggle = new ActionBarDrawerToggle(this, mainBinding.getRoot(),
toolbarLayoutBinding.toolbar, R.string.drawer_open, R.string.drawer_close);
toggle.syncState();
mainBinding.getRoot().addDrawerListener(toggle);
mainBinding.getRoot().addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
private int lastService;
@Override
public void onDrawerOpened(final View drawerView) {
lastService = ServiceHelper.getSelectedServiceId(MainActivity.this);
}
@Override
public void onDrawerClosed(final View drawerView) {
if (servicesShown) {
toggleServices();
}
if (lastService != ServiceHelper.getSelectedServiceId(MainActivity.this)) {
ActivityCompat.recreate(MainActivity.this);
}
}
});
drawerLayoutBinding.navigation.setNavigationItemSelectedListener(this::drawerItemSelected);
setupDrawerHeader();
}
private boolean drawerItemSelected(final MenuItem item) {
@@ -337,11 +362,15 @@ public class MainActivity extends AppCompatActivity {
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_tabs_group);
drawerLayoutBinding.navigation.getMenu().removeGroup(R.id.menu_options_about_group);
// Show up or down arrow
drawerHeaderBinding.drawerArrow.setImageResource(
servicesShown ? R.drawable.ic_arrow_drop_up : R.drawable.ic_arrow_drop_down);
if (servicesShown) {
showServices();
} else {
try {
showTabs();
addDrawerMenuForCurrentService();
} catch (final Exception e) {
ErrorActivity.reportUiErrorInSnackbar(this, "Showing main page tabs", e);
}
@@ -349,8 +378,6 @@ public class MainActivity extends AppCompatActivity {
}
private void showServices() {
drawerHeaderBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_up);
for (final StreamingService s : NewPipe.getServices()) {
final String title = s.getServiceInfo().getName()
+ (ServiceHelper.isBeta(s) ? " (beta)" : "");
@@ -402,7 +429,7 @@ public class MainActivity extends AppCompatActivity {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
getSupportFragmentManager().popBackStack(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
recreate();
ActivityCompat.recreate(MainActivity.this);
}, 300);
}
@@ -414,48 +441,6 @@ public class MainActivity extends AppCompatActivity {
menuItem.setActionView(spinner);
}
private void showTabs() throws ExtractionException {
drawerHeaderBinding.drawerArrow.setImageResource(R.drawable.ic_arrow_drop_down);
//Tabs
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
final StreamingService service = NewPipe.getService(currentServiceId);
int kioskId = 0;
for (final String ks : service.getKioskList().getAvailableKiosks()) {
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, kioskId, ORDER,
KioskTranslator.getTranslatedKioskName(ks, this))
.setIcon(KioskTranslator.getKioskIcon(ks, this));
kioskId++;
}
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_SUBSCRIPTIONS, ORDER, R.string.tab_subscriptions)
.setIcon(R.drawable.ic_tv);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_FEED, ORDER, R.string.fragment_feed_title)
.setIcon(R.drawable.ic_rss_feed);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_BOOKMARKS, ORDER, R.string.tab_bookmarks)
.setIcon(R.drawable.ic_bookmark);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_DOWNLOADS, ORDER, R.string.downloads)
.setIcon(R.drawable.ic_file_download);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_HISTORY, ORDER, R.string.action_history)
.setIcon(R.drawable.ic_history);
//Settings and About
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_options_about_group, ITEM_ID_SETTINGS, ORDER, R.string.settings)
.setIcon(R.drawable.ic_settings);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_options_about_group, ITEM_ID_ABOUT, ORDER, R.string.tab_about)
.setIcon(R.drawable.ic_info_outline);
}
@Override
protected void onDestroy() {
super.onDestroy();
@@ -823,7 +808,7 @@ public class MainActivity extends AppCompatActivity {
return;
}
if (PlayerHolder.isPlayerOpen()) {
if (PlayerHolder.getInstance().isPlayerOpen()) {
// if the player is already open, no need for a broadcast receiver
openMiniPlayerIfMissing();
} else {

View File

@@ -11,6 +11,7 @@ import org.schabi.newpipe.database.AppDatabase;
import static org.schabi.newpipe.database.AppDatabase.DATABASE_NAME;
import static org.schabi.newpipe.database.Migrations.MIGRATION_1_2;
import static org.schabi.newpipe.database.Migrations.MIGRATION_2_3;
import static org.schabi.newpipe.database.Migrations.MIGRATION_3_4;
public final class NewPipeDatabase {
private static volatile AppDatabase databaseInstance;
@@ -22,7 +23,7 @@ public final class NewPipeDatabase {
private static AppDatabase getDatabase(final Context context) {
return Room
.databaseBuilder(context.getApplicationContext(), AppDatabase.class, DATABASE_NAME)
.addMigrations(MIGRATION_1_2, MIGRATION_2_3)
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4)
.build();
}

View File

@@ -0,0 +1,80 @@
package org.schabi.newpipe;
import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText;
import android.content.Context;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.PopupMenu;
import androidx.fragment.app.FragmentManager;
import org.schabi.newpipe.database.stream.model.StreamEntity;
import org.schabi.newpipe.local.dialog.PlaylistDialog;
import org.schabi.newpipe.player.playqueue.PlayQueue;
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
import org.schabi.newpipe.util.NavigationHelper;
import java.util.Collections;
public final class QueueItemMenuUtil {
private QueueItemMenuUtil() {
}
public static void openPopupMenu(final PlayQueue playQueue,
final PlayQueueItem item,
final View view,
final boolean hideDetails,
final FragmentManager fragmentManager,
final Context context) {
final ContextThemeWrapper themeWrapper =
new ContextThemeWrapper(context, R.style.DarkPopupMenu);
final PopupMenu popupMenu = new PopupMenu(themeWrapper, view);
popupMenu.inflate(R.menu.menu_play_queue_item);
if (hideDetails) {
popupMenu.getMenu().findItem(R.id.menu_item_details).setVisible(false);
}
popupMenu.setOnMenuItemClickListener(menuItem -> {
switch (menuItem.getItemId()) {
case R.id.menu_item_remove:
final int index = playQueue.indexOf(item);
playQueue.remove(index);
return true;
case R.id.menu_item_details:
// playQueue is null since we don't want any queue change
NavigationHelper.openVideoDetail(context, item.getServiceId(),
item.getUrl(), item.getTitle(), null,
false);
return true;
case R.id.menu_item_append_playlist:
PlaylistDialog.createCorrespondingDialog(
context,
Collections.singletonList(new StreamEntity(item)),
dialog -> dialog.show(
fragmentManager,
"QueueItemMenuUtil@append_playlist"
)
);
return true;
case R.id.menu_item_channel_details:
// An intent must be used here.
// Opening with FragmentManager transactions is not working,
// as PlayQueueActivity doesn't use fragments.
NavigationHelper.openChannelFragmentUsingIntent(context, item.getServiceId(),
item.getUploaderUrl(), item.getUploader());
return true;
case R.id.menu_item_share:
shareText(context, item.getTitle(), item.getUrl(),
item.getThumbnailUrl());
return true;
}
return false;
});
popupMenu.show();
}
}

View File

@@ -1,5 +1,8 @@
package org.schabi.newpipe;
import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO;
import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.VIDEO;
import android.annotation.SuppressLint;
import android.app.IntentService;
import android.content.Context;
@@ -30,6 +33,7 @@ import androidx.core.widget.TextViewCompat;
import androidx.fragment.app.FragmentManager;
import androidx.preference.PreferenceManager;
import org.schabi.newpipe.database.stream.model.StreamEntity;
import org.schabi.newpipe.databinding.ListRadioIconItemBinding;
import org.schabi.newpipe.databinding.SingleChoiceDialogViewBinding;
import org.schabi.newpipe.download.DownloadDialog;
@@ -56,6 +60,7 @@ import org.schabi.newpipe.extractor.playlist.PlaylistInfo;
import org.schabi.newpipe.extractor.stream.StreamInfo;
import org.schabi.newpipe.extractor.stream.VideoStream;
import org.schabi.newpipe.ktx.ExceptionUtils;
import org.schabi.newpipe.local.dialog.PlaylistDialog;
import org.schabi.newpipe.player.MainPlayer;
import org.schabi.newpipe.player.helper.PlayerHelper;
import org.schabi.newpipe.player.helper.PlayerHolder;
@@ -69,14 +74,15 @@ import org.schabi.newpipe.util.ExtractorHelper;
import org.schabi.newpipe.util.ListHelper;
import org.schabi.newpipe.util.NavigationHelper;
import org.schabi.newpipe.util.PermissionHelper;
import org.schabi.newpipe.util.external_communication.ShareUtils;
import org.schabi.newpipe.util.ThemeHelper;
import org.schabi.newpipe.util.external_communication.ShareUtils;
import org.schabi.newpipe.util.urlfinder.UrlFinder;
import org.schabi.newpipe.views.FocusOverlayView;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import icepick.Icepick;
@@ -89,9 +95,6 @@ import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import io.reactivex.rxjava3.schedulers.Schedulers;
import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.AUDIO;
import static org.schabi.newpipe.extractor.StreamingService.ServiceInfo.MediaCapability.VIDEO;
/**
* Get the url from the intent and open it in the chosen preferred player.
*/
@@ -107,6 +110,7 @@ public class RouterActivity extends AppCompatActivity {
protected String currentUrl;
private StreamingService currentService;
private boolean selectionIsDownload = false;
private boolean selectionIsAddToPlaylist = false;
private AlertDialog alertDialogChoice = null;
@Override
@@ -350,7 +354,7 @@ public class RouterActivity extends AppCompatActivity {
.setNegativeButton(R.string.just_once, dialogButtonsClickListener)
.setPositiveButton(R.string.always, dialogButtonsClickListener)
.setOnDismissListener((dialog) -> {
if (!selectionIsDownload) {
if (!selectionIsDownload && !selectionIsAddToPlaylist) {
finish();
}
})
@@ -446,6 +450,10 @@ public class RouterActivity extends AppCompatActivity {
final AdapterChoiceItem backgroundPlayer = new AdapterChoiceItem(
getString(R.string.background_player_key), getString(R.string.background_player),
R.drawable.ic_headset);
final AdapterChoiceItem addToPlaylist = new AdapterChoiceItem(
getString(R.string.add_to_playlist_key), getString(R.string.add_to_playlist),
R.drawable.ic_add);
if (linkType == LinkType.STREAM) {
if (isExtVideoEnabled) {
@@ -453,7 +461,7 @@ public class RouterActivity extends AppCompatActivity {
returnList.add(showInfo);
returnList.add(videoPlayer);
} else {
final MainPlayer.PlayerType playerType = PlayerHolder.getType();
final MainPlayer.PlayerType playerType = PlayerHolder.getInstance().getType();
if (capabilities.contains(VIDEO)
&& PlayerHelper.isAutoplayAllowedByUser(context)
&& playerType == null || playerType == MainPlayer.PlayerType.VIDEO) {
@@ -482,6 +490,10 @@ public class RouterActivity extends AppCompatActivity {
getString(R.string.download),
R.drawable.ic_file_download));
// Add to playlist is not necessary for CHANNEL and PLAYLIST linkType since those can
// not be added to a playlist
returnList.add(addToPlaylist);
} else {
returnList.add(showInfo);
if (capabilities.contains(VIDEO) && !isExtVideoEnabled) {
@@ -547,6 +559,12 @@ public class RouterActivity extends AppCompatActivity {
return;
}
if (selectedChoiceKey.equals(getString(R.string.add_to_playlist_key))) {
selectionIsAddToPlaylist = true;
openAddToPlaylistDialog();
return;
}
// stop and bypass FetcherService if InfoScreen was selected since
// StreamDetailFragment can fetch data itself
if (selectedChoiceKey.equals(getString(R.string.show_info_key))) {
@@ -572,6 +590,41 @@ public class RouterActivity extends AppCompatActivity {
finish();
}
private void openAddToPlaylistDialog() {
// Getting the stream info usually takes a moment
// Notifying the user here to ensure that no confusion arises
Toast.makeText(
getApplicationContext(),
getString(R.string.processing_may_take_a_moment),
Toast.LENGTH_SHORT)
.show();
disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, false)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
info -> PlaylistDialog.createCorrespondingDialog(
getThemeWrapperContext(),
Collections.singletonList(new StreamEntity(info)),
playlistDialog -> {
playlistDialog.setOnDismissListener(dialog -> finish());
playlistDialog.show(
this.getSupportFragmentManager(),
"addToPlaylistDialog"
);
}
),
throwable -> handleError(this, new ErrorInfo(
throwable,
UserAction.REQUESTED_STREAM,
"Tried to add " + currentUrl + " to a playlist",
currentService.getServiceId())
)
)
);
}
@SuppressLint("CheckResult")
private void openDownloadDialog() {
disposables.add(ExtractorHelper.getStreamInfo(currentServiceId, currentUrl, true)

View File

@@ -162,10 +162,18 @@ class AboutActivity : AppCompatActivity() {
"OkHttp", "2019", "Square, Inc.",
"https://square.github.io/okhttp/", StandardLicenses.APACHE2
),
SoftwareComponent(
"Picasso", "2013", "Square, Inc.",
"https://square.github.io/picasso/", StandardLicenses.APACHE2
),
SoftwareComponent(
"PrettyTime", "2012 - 2020", "Lincoln Baxter, III",
"https://github.com/ocpsoft/prettytime", StandardLicenses.APACHE2
),
SoftwareComponent(
"ProcessPhoenix", "2015", "Jake Wharton",
"https://github.com/JakeWharton/ProcessPhoenix", StandardLicenses.APACHE2
),
SoftwareComponent(
"RxAndroid", "2015", "The RxAndroid authors",
"https://github.com/ReactiveX/RxAndroid", StandardLicenses.APACHE2
@@ -177,11 +185,6 @@ class AboutActivity : AppCompatActivity() {
SoftwareComponent(
"RxJava", "2016 - 2020", "RxJava Contributors",
"https://github.com/ReactiveX/RxJava", StandardLicenses.APACHE2
),
SoftwareComponent(
"Universal Image Loader", "2011 - 2015", "Sergey Tarasevich",
"https://github.com/nostra13/Android-Universal-Image-Loader",
StandardLicenses.APACHE2
)
)
private const val POS_ABOUT = 0

Some files were not shown because too many files have changed in this diff Show More