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

Compare commits

...

691 Commits

Author SHA1 Message Date
Tobi
49429ff40a Merge pull request #10700 from TeamNewPipe/newpipe_0.26.1
Newpipe 0.26.1
2023-12-26 18:26:48 +01:00
TobiGr
3df21ad25e Bump version to 0.26.1 (996) 2023-12-26 16:59:02 +01:00
TobiGr
d0f4600be4 Add changelog for NewPipe 0.26.1 2023-12-26 16:58:49 +01:00
TobiGr
0fa2e76c3e Fix NPE when ChannelTabLHFactory not implemented for a service
Fixes #10698
2023-12-26 16:55:52 +01:00
Stypox
67629938d6 Merge pull request #10470 from TeamNewPipe/release-0.26.0
Release 0.26.0
2023-12-21 22:40:05 +01:00
Hosted Weblate
9aff49bd88 Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Danish)

Currently translated at 88.2% (640 of 725 strings)

Translated using Weblate (Serbian)

Currently translated at 17.1% (13 of 76 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Filipino)

Currently translated at 32.1% (233 of 725 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Romanian)

Currently translated at 99.4% (721 of 725 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.3% (74 of 76 strings)

Translated using Weblate (Arabic (Libya))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (French)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Polish)

Currently translated at 61.8% (47 of 76 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 28.9% (22 of 76 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Merge branch 'origin/dev' into Weblate.

Translated using Weblate (Bengali)

Currently translated at 78.7% (571 of 725 strings)

Translated using Weblate (Basque)

Currently translated at 95.0% (689 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 43.4% (33 of 76 strings)

Translated using Weblate (Lithuanian)

Currently translated at 92.9% (674 of 725 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 30.2% (23 of 76 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (724 of 725 strings)

Translated using Weblate (Interlingua)

Currently translated at 32.0% (232 of 725 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Romanian)

Currently translated at 89.3% (648 of 725 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (German)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Filipino)

Currently translated at 32.1% (233 of 725 strings)

Translated using Weblate (Filipino)

Currently translated at 32.1% (233 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 72.3% (55 of 76 strings)

Translated using Weblate (Esperanto)

Currently translated at 3.9% (3 of 76 strings)

Translated using Weblate (Swedish)

Currently translated at 99.7% (723 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 71.0% (515 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 2.6% (2 of 76 strings)

Translated using Weblate (Tigrinya)

Currently translated at 8.4% (61 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 43.4% (33 of 76 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (Finnish)

Currently translated at 98.3% (713 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 70.0% (508 of 725 strings)

Added translation using Weblate (English (Old))

Added translation using Weblate (Aymara)

Added translation using Weblate (English (Middle))

Added translation using Weblate (Arabic (Najdi))

Added translation using Weblate (German (Low))

Added translation using Weblate (Sicilian)

Added translation using Weblate (Kashmiri)

Added translation using Weblate (Burmese)

Translated using Weblate (Tigrinya)

Currently translated at 3.5% (26 of 725 strings)

Translated using Weblate (Georgian)

Currently translated at 91.1% (661 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.8% (717 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 42.1% (32 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Interlingua)

Currently translated at 31.3% (227 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 35.5% (27 of 76 strings)

Translated using Weblate (Esperanto)

Currently translated at 69.2% (502 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 69.2% (502 of 725 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Bulgarian)

Currently translated at 63.8% (463 of 725 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 66.3% (481 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.6% (715 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 31.5% (24 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 97.3% (706 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 98.4% (714 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (76 of 76 strings)

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

Currently translated at 21.0% (16 of 76 strings)

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

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.2% (712 of 725 strings)

Deleted translation using Weblate (English (Middle))

Co-authored-by: /dev/urandom <dev.urandom@posteo.org>
Co-authored-by: A <ogloppi@mailbox.org>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Aitor Salaberria <trslbrr@gmail.com>
Co-authored-by: Alexthegib <traducoes@skiff.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Ans Virlis <tddakk@yahoo.com>
Co-authored-by: AudricV <AudricV@users.noreply.hosted.weblate.org>
Co-authored-by: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>
Co-authored-by: Cem TÜRKER <cemburbut@gmail.com>
Co-authored-by: Danr <mdp43140@gmail.com>
Co-authored-by: David Svane <davidcygnus@users.noreply.hosted.weblate.org>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Erik Matson <erik@nextleveltranslation.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Giorgi Taba K'obakhidze <t@gtk.ge>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihfandi <ihfandicahyo@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jener Gomes <jenerg1@gmail.com>
Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Co-authored-by: LiftedStarfish <liftedstarfish@protonmail.com>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
Co-authored-by: Napstaguy04 <brokenscreen3@gmail.com>
Co-authored-by: Nista <42772160+Nista11@users.noreply.github.com>
Co-authored-by: P.O <rasmusson.mikael@protonmail.com>
Co-authored-by: PiryusQ <piryusq@gmail.com>
Co-authored-by: Ray <ray@users.noreply.hosted.weblate.org>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: Stypox <stypox@pm.me>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: Tmpod <tom@tmpod.dev>
Co-authored-by: TobiGr <TobiGr@users.noreply.github.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: ferarilalon <ferarilalongpt@gmail.com>
Co-authored-by: fsbat0 <fsbat@duck.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: ngocanhtve <ngocanh.tve@gmail.com>
Co-authored-by: notlin4 <iamnotlin4@gmail.com>
Co-authored-by: searinminecraft <114207889+searinminecraft@users.noreply.github.com>
Co-authored-by: sum1tookshoe <gamingwithshoe@gmail.com>
Co-authored-by: trunars <trunars@gmail.com>
Co-authored-by: İbrahim Dinç <woltytherespectful@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eo/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2023-12-21 22:37:00 +01:00
Stypox
5b999a88f8 Merge pull request #10673 from Stypox/transaction-too-large
Fix transaction too large in channel tab fragments
2023-12-21 22:30:22 +01:00
Stypox
482531836f Merge pull request #10670 from Stypox/feed-oom
Fix OutOfMemory when fetching feed
2023-12-21 22:29:46 +01:00
Stypox
b3c82f54df Merge pull request #10671 from Stypox/channel-main-tab-lag
Fix application lagging with many main page tabs
2023-12-21 22:28:59 +01:00
Stypox
77fa4bbe2f Update NewPipeExtractor to v0.23.1 2023-12-21 22:28:09 +01:00
Stypox
495c9850b4 Fix transaction too large for channel tab fragments 2023-12-20 23:57:43 +01:00
Stypox
c0f8d145f8 Fix lag with many channels on main page
Disable loading all tabs at once, since there can be many of them, and use default strategy of only keeping in memory the two tabs adjacent to the current tab.
2023-12-20 22:47:57 +01:00
Stypox
80f33daeeb Fix OutOfMemory when fetching feed
Reduced memory footprint of FeedUpdateInfo objects. Those objects might stay around for a while and accumulate (up to BUFFER_COUNT_BEFORE_INSERT = 20 at the moment), so in order not to fill up the memory it's better to keep as little data as possible.
Previously ChannelInfo data was stored, causing ReadyChannelTabLinkHandler objects to be also stored uselessly (and those channel tabs contain prefetched JSON data which used ~700KB of memory).
2023-12-20 20:22:45 +01:00
Stypox
a16dcb63b5 Merge pull request #10645 from Stypox/fix-fragment-manager
Fix crashes due to wrong root fragment manager
2023-12-20 12:03:24 +01:00
Stypox
b871b5d2dd Fix crashes due to wrong root fragment manager 2023-12-10 16:06:07 +01:00
Stypox
e876647af5 Update NewPipeExtractor to v0.23.0 2023-12-10 15:58:45 +01:00
Stypox
8d59812827 Fix channel avatar not loading correctly sometimes
The fix just involves removing some really outdated code (6 years ago) added in 33e29be7db (diff-38bd2cf1b92659b499c08e1cf6ac9ef384c7e13381b906f2f98c57cbb758756dR778) (blame: 9318bb5306/app/src/main/java/org/schabi/newpipe/detail/VideoItemDetailActivity.java (L778)).
What that code did was setting the 'buddy' image to the uploader avatar as a placeholder, and then setting the actual image if it existed and after it had loaded.
That code remained there up until now, but now it doesn't make sense anymore, since Picasso already takes care of setting placeholders.
The problem is, starting from #10066 the actual uploader image is set before (not after) those lines of code, making them do the wrong thing, i.e. always overwrite the currently set image.
But then why did the channel avatar image work normally sometimes?
My guess is that since Picasso loads images in the background, when opening a video from scratch setting the placeholder still happened before Picasso finished loading the image.
However when the image is already cached it's loaded much faster and therefore setting the placeholder happens after, effectively hiding the loaded image.
2023-12-10 15:12:38 +01:00
TobiGr
e39ac885de Update new version check to match new API structure
See TeamNewPipe/web-api#17
2023-12-10 15:12:38 +01:00
TobiGr
e6965622bd Fix crash with disabled thumbnails when trying to play a stream 2023-12-10 15:12:38 +01:00
TobiGr
0d8d3479e1 NewPipe 0.26.0 (995) 2023-12-10 15:12:38 +01:00
Stypox
35c1dfd145 Update changelog for NewPipe 0.26.0 (995) 2023-12-10 15:05:29 +01:00
Hosted Weblate
096115def7 Translated using Weblate (Bengali)
Currently translated at 78.7% (571 of 725 strings)

Translated using Weblate (Basque)

Currently translated at 95.0% (689 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 43.4% (33 of 76 strings)

Translated using Weblate (Lithuanian)

Currently translated at 92.9% (674 of 725 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 30.2% (23 of 76 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (724 of 725 strings)

Translated using Weblate (Interlingua)

Currently translated at 32.0% (232 of 725 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Romanian)

Currently translated at 89.3% (648 of 725 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (German)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Filipino)

Currently translated at 32.1% (233 of 725 strings)

Translated using Weblate (Filipino)

Currently translated at 32.1% (233 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 72.3% (55 of 76 strings)

Translated using Weblate (Esperanto)

Currently translated at 3.9% (3 of 76 strings)

Translated using Weblate (Swedish)

Currently translated at 99.7% (723 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 71.0% (515 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 2.6% (2 of 76 strings)

Translated using Weblate (Tigrinya)

Currently translated at 8.4% (61 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 43.4% (33 of 76 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (Finnish)

Currently translated at 98.3% (713 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 70.0% (508 of 725 strings)

Added translation using Weblate (English (Old))

Added translation using Weblate (Aymara)

Added translation using Weblate (English (Middle))

Added translation using Weblate (Arabic (Najdi))

Added translation using Weblate (German (Low))

Added translation using Weblate (Sicilian)

Added translation using Weblate (Kashmiri)

Added translation using Weblate (Burmese)

Translated using Weblate (Tigrinya)

Currently translated at 3.5% (26 of 725 strings)

Translated using Weblate (Georgian)

Currently translated at 91.1% (661 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.8% (717 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 42.1% (32 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Interlingua)

Currently translated at 31.3% (227 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 35.5% (27 of 76 strings)

Translated using Weblate (Esperanto)

Currently translated at 69.2% (502 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 69.2% (502 of 725 strings)

Translated using Weblate (German)

Currently translated at 81.5% (62 of 76 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Bulgarian)

Currently translated at 63.8% (463 of 725 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Esperanto)

Currently translated at 66.3% (481 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.6% (715 of 725 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 31.5% (24 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 97.3% (706 of 725 strings)

Translated using Weblate (Swedish)

Currently translated at 98.4% (714 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Vietnamese)

Currently translated at 94.6% (686 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (76 of 76 strings)

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

Currently translated at 21.0% (16 of 76 strings)

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

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.2% (712 of 725 strings)

Deleted translation using Weblate (English (Middle))

Co-authored-by: /dev/urandom <dev.urandom@posteo.org>
Co-authored-by: A <ogloppi@mailbox.org>
Co-authored-by: Aitor Salaberria <trslbrr@gmail.com>
Co-authored-by: Alexthegib <traducoes@skiff.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Ans Virlis <tddakk@yahoo.com>
Co-authored-by: AudricV <AudricV@users.noreply.hosted.weblate.org>
Co-authored-by: Cem TÜRKER <cemburbut@gmail.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Erik Matson <erik@nextleveltranslation.com>
Co-authored-by: Giorgi Taba K'obakhidze <t@gtk.ge>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jener Gomes <jenerg1@gmail.com>
Co-authored-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>
Co-authored-by: LiftedStarfish <liftedstarfish@protonmail.com>
Co-authored-by: Napstaguy04 <brokenscreen3@gmail.com>
Co-authored-by: P.O <rasmusson.mikael@protonmail.com>
Co-authored-by: PiryusQ <piryusq@gmail.com>
Co-authored-by: Ray <ray@users.noreply.hosted.weblate.org>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: TobiGr <TobiGr@users.noreply.github.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
Co-authored-by: ferarilalon <ferarilalongpt@gmail.com>
Co-authored-by: fsbat0 <fsbat@duck.com>
Co-authored-by: ngocanhtve <ngocanh.tve@gmail.com>
Co-authored-by: notlin4 <iamnotlin4@gmail.com>
Co-authored-by: sum1tookshoe <gamingwithshoe@gmail.com>
Co-authored-by: trunars <trunars@gmail.com>
Co-authored-by: İbrahim Dinç <woltytherespectful@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eo/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2023-12-10 14:50:31 +01:00
Stypox
e784af3e2d Merge pull request #10446 from AudricV/dl_improve_video_audio_stream_selection
Improve audio stream selection for video-only streams in the downloader
2023-12-07 16:48:57 +01:00
Stypox
ce30108efc Improve javadoc for getAudioStreamFor 2023-12-07 16:40:32 +01:00
Stypox
edbd623e21 Fix Matrix channel link
#newpipe:matrix.org is unofficial, #newpipe:libera.chat is the official one
2023-12-07 16:11:59 +01:00
Stypox
7cfd537755 Merge pull request #10494 from TobiGr/fix-new-streams
Fix notifying about old "new" streams
2023-12-07 14:12:54 +01:00
opusforlife2
ddd6d03e0b Add Matrix room link to ReadMe (#10632) 2023-12-06 18:34:43 +00:00
Tobi
b4a0e08d9d Update app/src/main/java/org/schabi/newpipe/database/feed/dao/FeedDAO.kt
Co-authored-by: Stypox <stypox@pm.me>
2023-11-23 17:12:16 +01:00
Stypox
545f9ae5f3 Merge pull request #10489 from sqproman/missing_quotation_replace_char_crash
Quote filename replacement characters to fix crashes when downloading streams with special characters
2023-11-16 20:19:01 +01:00
Stypox
be4a5a5f3e Merge pull request #10576 from AudricV/fix-npe-feed-new-items-button
Fix crash when setting the masking of the new feed items button if the context is null
2023-11-16 09:02:24 +01:00
Stypox
3dc593fe88 Merge pull request #10577 from AudricV/fix-npe-play-queue-audio-track-menu
Fix crash when building the play queue audio track menu if the player is null
2023-11-16 09:01:11 +01:00
Stypox
e8ed18f1cf Merge pull request #10578 from AudricV/try-fix-player-service-foreground-start
Restore player service start handling before player UI separation and fix some issues in this service
2023-11-16 08:59:56 +01:00
Stypox
bf8890b0df Merge pull request #10579 from AudricV/exclude-hls-opus-streams-for-playback
Remove OPUS HLS streams from playable streams
2023-11-16 08:30:49 +01:00
AudricV
e5fda35c51 Remove OPUS HLS streams from playable streams
This format is not supported by ExoPlayer when returned as HLS streams, so we
can't play streams using this format and this delivery method.

Also improve the Javadoc of ListHelper.getPlayableStreams.
2023-11-15 23:37:22 +01:00
AudricV
84d50da009 Restore player service start handling before player UI separation
This behavior was present before 0.24.0 and the player UI separation and
avoided crashes for which their exception contained
"Context.startForegroundService() did not then call Service.startForeground()".

Some player nullability checks have been also added, and the player service is
now stopped when it has been started from a media button and there is nothing
to play.
2023-11-15 23:21:20 +01:00
AudricV
2cf7764714 Fix crash when building the play queue audio track menu if the player is null
As the player can be null in some cases, we have to make sure that the player
is not null, by using Optionals on the player itself instead of its methods
returning Optionals.

If the player is null, the play queue audio track menu will now be hidden.
2023-11-15 21:45:56 +01:00
AudricV
9fab0ec94f Fix crash when setting the masking of the new feed items button if the context is null
As the fragment context can be null in some cases, we have to make sure that
the context is not null before calling
DeviceUtils.hasAnimationsAnimatorDurationEnabled.

If the context is null, the button will now not be hidden automatically.
2023-11-15 19:04:45 +01:00
Stypox
6d694518fe Merge pull request #10491 from TeamNewPipe/readme
[README] Remove Bitcoin and Bountysource donation options
2023-10-27 05:41:59 +02:00
TobiGr
5265b767cb Fix notifiying about old "new" streams
Add tests for `FeedDAO.unlinkStreamsOlderThan(:offsetDateTime) `
Closes #10237
2023-10-14 18:33:21 +02:00
TobiGr
d10a93fe4f [README] Remove Bountysource badge 2023-10-13 17:30:13 +02:00
TobiGr
995986ecc7 [README] Remove Bitcoin and Bountysource donation options 2023-10-13 17:30:13 +02:00
akko
6d0bb02544 adds quotation to create filename util replacement char 2023-10-13 11:28:09 +07:00
TobiGr
6f51c47dc9 Deleted translation using Weblate (Sicilian) 2023-10-07 17:39:49 +02:00
TobiGr
626daf89c1 Deleted translation using Weblate (Kashmiri) 2023-10-07 17:39:44 +02:00
Hosted Weblate
b18ccffeb4 Added translation using Weblate (English (Middle))
Deleted translation using Weblate (German (Low))

Deleted translation using Weblate (English (Old))

Deleted translation using Weblate (English (Middle))

Deleted translation using Weblate (Burmese)

Deleted translation using Weblate (Aymara)

Deleted translation using Weblate (Arabic (Najdi))

Co-authored-by: TobiGr <TobiGr@users.noreply.github.com>
Co-authored-by: Weblate <noreply@weblate.org>
2023-10-07 15:39:43 +00:00
Hosted Weblate
2ab2185e0a Translated using Weblate (Odia)
Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Serbian)

Currently translated at 17.1% (13 of 76 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Arabic (Libya))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Finnish)

Currently translated at 98.0% (711 of 725 strings)

Translated using Weblate (French)

Currently translated at 98.2% (712 of 725 strings)

Translated using Weblate (Indonesian)

Currently translated at 94.7% (72 of 76 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Hebrew)

Currently translated at 51.3% (39 of 76 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (76 of 76 strings)

Translated using Weblate (Polish)

Currently translated at 61.8% (47 of 76 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (76 of 76 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Linerly <linerly@proton.me>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: Åzze <laitinen.jere222@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/he/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translation: NewPipe/Metadata
2023-10-07 17:21:24 +02:00
TobiGr
be47609405 Add changelog for NewPipe 0.26.0 (995) 2023-10-05 14:49:35 +02:00
Hosted Weblate
5dee7a5262 Translated using Weblate (Portuguese)
Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Thai)

Currently translated at 29.3% (213 of 725 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 95.0% (689 of 725 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.7% (723 of 725 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (German)

Currently translated at 100.0% (725 of 725 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Portuguese)

Currently translated at 95.2% (685 of 719 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Arabic (Libya))

Currently translated at 99.1% (713 of 719 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (German)

Currently translated at 81.3% (61 of 75 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (French)

Currently translated at 98.4% (708 of 719 strings)

Translated using Weblate (German)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Arabic (Libya))

Currently translated at 99.3% (714 of 719 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (718 of 719 strings)

Translated using Weblate (French)

Currently translated at 97.7% (703 of 719 strings)

Translated using Weblate (German)

Currently translated at 99.4% (715 of 719 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Czech)

Currently translated at 95.5% (687 of 719 strings)

Translated using Weblate (Greek)

Currently translated at 99.8% (718 of 719 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (719 of 719 strings)

Translated using Weblate (German)

Currently translated at 99.3% (714 of 719 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alexthegib <traducoes@skiff.com>
Co-authored-by: AudricV <AudricV@users.noreply.hosted.weblate.org>
Co-authored-by: ButterflyOfFire <boffire@users.noreply.hosted.weblate.org>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Peter Dave Hello <hsu@peterdavehello.org>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Retrial <giwrgosmant@gmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Sergio Marques <so.boston.android@gmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: TobiGr <tobigr@mail.de>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bowornsin <bowornsin@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kuragehime <kuragehime641@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: zmni <zmni@outlook.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translation: NewPipe/Metadata
2023-10-05 03:09:31 +02:00
Stypox
bff7ada2d1 Merge pull request #8248 from dtcxzyw/fix-readd-to-playlist
Fix inconsistency between user interaction and database commit order when re-adding videos to the playlist
2023-10-03 17:45:44 +02:00
Tobi
ed33d1d4f7 Fix images in README.sr.md 2023-10-02 16:21:27 +02:00
Tobi
64e64f72f7 Update README.asm.md 2023-10-02 16:18:54 +02:00
TobiGr
d3c783832a Fix screenshot URLs in multiple READMEs 2023-10-02 16:16:53 +02:00
TobiGr
d963b69d5c Fix links to README.sr.md 2023-10-02 16:06:33 +02:00
Tobi
49ce9ba387 Fix links to other READMEs in README.sr.md 2023-10-02 16:00:25 +02:00
NEXI
d63a6d3f75 Create Serbian README (#10465) 2023-10-02 15:58:26 +02:00
TobiGr
3d5a8af52b Fix inconsistency when LocalPlaylist is used as MainFragment tab 2023-10-02 02:56:30 +02:00
Yingwei Zheng
1cf670dad9 Fix inconsistency between user interaction and database commit order when re-adding videos to the playlist 2023-10-02 02:56:30 +02:00
Tobi
b50e3c07d2 Use PR labeler fork
This updates some libs
2023-10-02 02:15:25 +02:00
Tobi
fe7d1692c3 Fix PR labeler permissions
Although the permission to modify PRs is granted to the entire workflow, the job still reports that it does not the permission to do so:
GITHUB_TOKEN Permissions
  Contents: read
  Metadata: read
  PullRequests: read
This adds the permission to the job directly
2023-09-27 10:06:34 +02:00
TobiGr
0758cd6980 Fix wrongly formatted string ressources
There were multiple substitutions specified in non-positional format in the ressources video_details_list_item and share_playlist_content_details
2023-09-26 11:22:22 +02:00
Siddhesh Naik
e80b6b3057 Add playlist name and video name to playlist sharing content (#10427)
- Currently, only a list of videos separated by newline are added in
  the share content.
- This makes it difficult to identify a specific video in a list of
  Urls.
- Used string resources for the sharing content formats.
- Added a confirmation dialog for users to choose between sharing
  playlist formats.
- Added Playlist name as the header and corresponding video name for
  each video url in following format.

Playlist
- Music1: https://media-url1
- Music2: https://media-url2
- Music3: https://media-url3


Co-authored-by: TobiGr <tobigr@users.noreply.github.com>
2023-09-26 11:11:33 +02:00
Tobi
9c86afe40d Merge pull request #10453 from TeamNewPipe/pr-labeler
Add content: read permission to PR size labeler workflow
2023-09-26 10:42:01 +02:00
Tobi
db4619f5a4 Add content: read permission to PR size labeler workflow 2023-09-26 10:40:17 +02:00
Tobi
f90d74ca31 Merge pull request #10447 from TeamNewPipe/pr-labeler
Add write permission to PR labeler workflow
2023-09-24 20:27:58 +02:00
Tobi
609f0a2eee Add write permission to PR labeler workflow 2023-09-24 20:24:57 +02:00
AudricV
77bbbc88f8 Use ListHelper to get secondary audio streams for video-only streams
Instead of searching for the first audio stream matching a compatible media
format, this change makes SecondaryStreamHelper.getAudioStreamFor use methods
isLimitingDataUsage, getAudioFormatComparator and getAudioIndexByHighestRank of
ListHelper to get an audio stream which can be muxed into a video-only stream,
if available.

This allows users to download videos with the highest audio quality available
if no resolution limit on mobile data usage has been set.

The order of formats used to search a compatible audio stream has been kept.
2023-09-24 18:23:45 +02:00
AudricV
cdb79ef78a Make isLimitingDataUsage method of ListHelper package-private and fix some typos in the class 2023-09-24 18:23:44 +02:00
Tobi
1630e309fb Merge pull request #9987 from Edwardsoen/add_high_resolution_to_default_option
Include a high-resolution option in the default resolution settings.
2023-09-24 17:54:18 +02:00
Stypox
2d4f56f57c Merge pull request #10170 from TeamNewPipe/actions/pr-size-labeler
Add workflow "PR size labeler" to label PRs based on the number of changed lines
2023-09-24 09:34:33 +02:00
TobiGr
d622993483 Add workflow "PR size labeler" to label PRs based on the number of changed lines
This should help reviewers to determine which PRs to review.
2023-09-24 09:33:44 +02:00
Tobi
c68a6ee0ed Merge pull request #10436 from TeamNewPipe/fix/license-restore
Fix restoring software license dialog
2023-09-23 14:11:09 +02:00
TobiGr
94c1438913 Use "done" button to close license dialogs.
Rename string res "recaptcha_done_button" to "done".
2023-09-23 13:56:49 +02:00
TobiGr
e206a26a85 Restore license dialog buttons to open the SoftwareComponent's website
Do not keep the active License but the active SoftwareComponent.
2023-09-23 13:49:09 +02:00
TobiGr
242e20316b [AboutFragment / LicenseFragment] Fix license restore after rotation
Do not restore last opened license after a rotation change when the license was closed earlier.

This commit adds onCancelListener and onDismissListener to the AlertDialogs which are used to display the licenses.
2023-09-23 13:49:09 +02:00
TobiGr
279fd2399d Remove translations without default value 2023-09-22 21:44:58 +02:00
kuragehime
a5fcb41ab0 Translated using Weblate (ryu (generated) (ryu))
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Marian Hanzel
cb4f656673 Translated using Weblate (Slovak)
Currently translated at 18.6% (14 of 75 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sk/
2023-09-22 21:38:28 +02:00
ShareASmile
b9e5ee6759 Translated using Weblate (Punjabi)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
ShareASmile
1084b7c3ad Translated using Weblate (Hindi)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Yaron Shahrabani
39c06c5461 Translated using Weblate (Hebrew)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Jeff Huang
b9c7f8769b Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Eric
dc45adf7f2 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Agnieszka C
a69af42f7f Translated using Weblate (Polish)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Ihor Hordiichuk
1a5dfae7a0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Linerly
d41b5d80ad Translated using Weblate (Indonesian)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Rex_sa
f0bcb3ba28 Translated using Weblate (Arabic)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Marian Hanzel
7da35bf71d Translated using Weblate (Slovak)
Currently translated at 99.7% (711 of 713 strings)
2023-09-22 21:38:28 +02:00
Vasilis K
03c339dd4b Translated using Weblate (Greek)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
kuragehime
11c74bd26b Translated using Weblate (Japanese)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
gallegonovato
0a292cf893 Translated using Weblate (Spanish)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
TobiGr
ac6811867f Translated using Weblate (German)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
VfBFan
0c9df501e8 Translated using Weblate (German)
Currently translated at 100.0% (713 of 713 strings)
2023-09-22 21:38:28 +02:00
Hosted Weblate
4c4f9b45d9 Translated using Weblate (Kazakh)
Currently translated at 0.5% (4 of 702 strings)

Translated using Weblate (Kazakh)

Currently translated at 6.6% (5 of 75 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (702 of 702 strings)

Merge branch 'origin/dev' into Weblate.

Translated using Weblate (Spanish)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Greek)

Currently translated at 99.8% (701 of 702 strings)

Translated using Weblate (Japanese)

Currently translated at 98.2% (690 of 702 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (German)

Currently translated at 80.0% (60 of 75 strings)

Translated using Weblate (German)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (702 of 702 strings)

Translated using Weblate (Greek)

Currently translated at 97.8% (687 of 702 strings)

Translated using Weblate (Serbian)

Currently translated at 98.5% (692 of 702 strings)

Translated using Weblate (German)

Currently translated at 99.5% (699 of 702 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.8% (685 of 686 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hungarian)

Currently translated at 99.7% (684 of 686 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 16.0% (12 of 75 strings)

Translated using Weblate (Galician)

Currently translated at 99.5% (683 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 16.0% (12 of 75 strings)

Translated using Weblate (Bengali)

Currently translated at 83.8% (575 of 686 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (686 of 686 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Aidos <goldenbit.kz@yandex.kz>
Co-authored-by: Daniel Rozario <rozario@tuta.io>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Subham Jena <subhamjena8465@gmail.com>
Co-authored-by: Tibor Botfai (gidano) <gidano@gmail.com>
Co-authored-by: TobiGr <tobigr@mail.de>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <VfBFan@users.noreply.hosted.weblate.org>
Co-authored-by: WB <dln0@proton.me>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kuragehime <kuragehime641@gmail.com>
Co-authored-by: nexi <nexiphotographer@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: zmni <zmni@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/kk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sr/
Translation: NewPipe/Metadata
2023-09-22 21:38:28 +02:00
Audric V
5a921c9f10 Merge pull request #10440 from Stypox/remove-deobfuscation-exception
Update extractor and remove DeobfuscateException
2023-09-22 16:29:13 +02:00
Stypox
bdc2aa2b39 Update extractor and remove DeobfuscateException
In ErrorInfo it was treated separately from other ParsingExceptions, including by showing a customized message, which has now been removed.
2023-09-22 10:43:37 +02:00
Stypox
b508dd69be Merge pull request #10062 from Stypox/multiple-images
Allow selecting image quality among multiple images
2023-09-22 10:20:19 +02:00
Stypox
f8b756c8bc Make question mark localizable 2023-09-22 10:14:45 +02:00
Stypox
027b829c38 Use @DrawableRes in PicassoHelper 2023-09-22 10:14:45 +02:00
Stypox
0a2d6d1d62 Add test for ImageStrategy 2023-09-22 10:14:45 +02:00
Stypox
1b485ddb5a Allow using CHECKSTYLE:OFF comments 2023-09-22 10:14:45 +02:00
Stypox
0085ca6416 Fix loading images from db even if disabled 2023-09-22 10:14:44 +02:00
Stypox
87dca0f7ec Separate imageListToDbUrl from choosePreferredImage
imageListToDbUrl should be used if the URL is going to be saved to the database, to avoid saving nothing in case at the moment of saving the user preference is to not show images.
2023-09-22 10:14:44 +02:00
Stypox
37af2c87e8 Fix possible NPE in PlayQueueNavigator 2023-09-22 10:14:44 +02:00
Stypox
bf908f0b7d Add documentation and fix SonarCloud issue 2023-09-22 10:14:44 +02:00
Stypox
8d463b9577 Further improve image resolution strategy
Now using multiple comparison steps instead of magic values
2023-09-22 10:14:44 +02:00
Stypox
4f7d206736 Display all thumbnails in description tab 2023-09-22 10:14:44 +02:00
Stypox
35073c780d Implement better image selection strategy 2023-09-22 10:14:44 +02:00
Stypox
0a8f28b1c6 Add image quality preference 2023-09-22 10:14:43 +02:00
Stypox
af2375948d Support obtaining multiple images from the extractor 2023-09-22 09:57:33 +02:00
Tobi
e2de83188a Merge pull request #10199 from TeamNewPipe/feat/player/accessibility
Improved accessibility of player interfaces
2023-09-21 15:57:38 +02:00
TobiGr
2a1b506d98 Improved accessibility of player interfaces 2023-09-21 12:20:00 +02:00
Stypox
b798ff5c92 Merge pull request #10435 from TeamNewPipe/imp/codequality
Improve codequality
2023-09-20 21:24:44 +02:00
Tobi
673aa0a87b Merge pull request #10428 from Isira-Seneviratne/AGP_8.1
Bump AGP to 8.1.1
2023-09-20 20:20:36 +02:00
TobiGr
779ea19222 Fix doc formatting 2023-09-20 19:44:23 +02:00
Isira Seneviratne
a1f2b7f8e8 Switch to Files.createDirectories() 2023-09-20 19:44:23 +02:00
Isira Seneviratne
fcb855cea9 Bump AGP to 8.1.1 2023-09-20 19:44:23 +02:00
Tobi
50fb48f66d Merge pull request #10244 from TacoTheDank/bumpMaterial
Update Google Material library
2023-09-20 18:19:53 +02:00
TobiGr
0acc3532c9 Remove useless override 2023-09-20 15:42:09 +02:00
TobiGr
8bf2d996ea Reorder the modifiers to comply with the Java Language Specification. 2023-09-20 15:41:57 +02:00
TobiGr
748c2babe9 Add comments and annotations 2023-09-20 15:41:21 +02:00
Tobi
6859f73c54 Merge pull request #10224 from TacoTheDank/moreKotlinMath
Replace MathUtils.clamp with Kotlin coerceIn
2023-09-20 11:04:54 +02:00
TacoTheDank
b1faed586d Replace MathUtils.clamp with Kotlin coerceIn 2023-09-19 16:32:37 -04:00
TacoTheDank
6c848b4766 Update Google Material library 2023-09-19 16:30:09 -04:00
Stypox
725c18eada Merge pull request #10165 from TeamNewPipe/fix/media-format
Fix downloads of streams with missing MediaFormat
2023-09-19 15:54:12 +02:00
Stypox
992bb5d7be Simplify retrieveMediaFormatFromContentTypeHeader
Also check for nullity
2023-09-19 15:33:49 +02:00
Stypox
9e353f1cdc Merge pull request #10394 from TeamNewPipe/fix/memory-leaks
Fix memory leaks and add documentation
2023-09-19 14:17:23 +02:00
TobiGr
8f83e39970 Fix three memory leaks
Add documentation to BaseFragment.initViews(View, Bundle) and BaseFragment.initListeners()
2023-09-19 00:13:16 +02:00
Stypox
0eae9e7cdc Merge pull request #9182 from Theta-Dev/channel-tabs
Add support for channel tabs
2023-09-18 23:46:13 +02:00
TobiGr
031b893196 Remove unused content not supported TextView 2023-09-18 23:22:32 +02:00
TobiGr
64da7a06c0 Fix previous ActionBar title visible for a few miliseconds when opening ChannelFragment 2023-09-18 23:22:32 +02:00
TobiGr
57eaa1bbe1 Apply review
Co-Authored-By:  Audric V <74829229+AudricV@users.noreply.github.com>
2023-09-18 23:22:32 +02:00
TobiGr
109d06b4bb Deduplicate code to initialize ClickListeners on playlist controls
Add the separate utility class PlayButtonHelper to handle the initialization of the listeners.
The ClickListeners on playlist controls had different behaviours. This commit fixes that.

The commit also refactors the way how the app determines whether it is started for the first time. The previous version was not clean and recent in this PR caused it to fail.
2023-09-18 23:22:32 +02:00
AudricV
0d9910cbbe Fix SubscriptionManagerTest tests
The breakage of these tests is related to the channel tabs changes.

The testRememberRecentStreams test method has been removed, as it doesn't seem
to be relevant anymore to managing subscriptions.
2023-09-18 23:22:32 +02:00
AudricV
8fbc8ffc7c Remove unneeded German translation 2023-09-18 23:22:32 +02:00
AudricV
f2ee3859ab Hide the upload date element on the About tab
This empty element should be always hidden for this tab, as there is no upload
date available for channels.
2023-09-18 23:22:32 +02:00
AudricV
89dc44be61 Always show the About tab and support having no description 2023-09-18 23:22:32 +02:00
TobiGr
6ab8716e69 Extract actual feed loading code into separate method
Increase readability
2023-09-18 23:22:32 +02:00
TobiGr
5c7c382323 Add missing @Override annotations to setupMetadata() implementations 2023-09-18 23:22:32 +02:00
Stypox
78b4b9441e Update NewPipeExtractor and adapt imports 2023-09-18 23:22:32 +02:00
Stypox
9e55014a13 Fix wrongly themed channel header
Since it is embedded in the app bar and has red as background color, it should be themed in the same way as the toolbar.
2023-09-18 23:22:32 +02:00
Stypox
6f23b56b06 Use consistent name for livestreams tab in settings keys 2023-09-18 23:22:32 +02:00
Stypox
1519527356 Fix loading feed when a channel tab is empty 2023-09-18 23:22:32 +02:00
Stypox
6b3a178f2a Show snackbar with feed loading errors 2023-09-18 23:22:32 +02:00
Stypox
604419dd1f Make channel banner placeholder match YouTube's size
YouTube's "Desktop Max" thumbnails are 2560x423, while our previous placeholder banner was 2550x427. The extractor actually returns a lower resolution "Desktop Max" banner at 1060x175, but the ratio wrt 2560x423 is off by ~0.1%

The PNG was optimized with OptiPNG
2023-09-18 23:22:32 +02:00
Stypox
c48e702a50 Improve placeholder channel banner handling
Now the placeholder gets hidden if there is no banner url or the user disabled images, to save space
2023-09-18 23:22:32 +02:00
Stypox
1061bce4f3 Add avatar and bannner URLs to channel About tab 2023-09-18 23:22:32 +02:00
Stypox
013d513450 Add space above channel description (About tab) 2023-09-18 23:22:32 +02:00
ThetaDev
dca32efadf add channel banner placeholder 2023-09-18 23:22:32 +02:00
ThetaDev
28d952a643 feat: filter fetched channel tabs 2023-09-18 23:22:32 +02:00
ThetaDev
a2a717bd49 update NPE 2023-09-18 23:22:32 +02:00
ThetaDev
753a92055c feat: add playlist controls to channel tab 2023-09-18 23:22:32 +02:00
Stypox
371f986773 Fix some code smells 2023-09-18 23:22:32 +02:00
Stypox
a1e8b9be4e Fix channel tabs in main page setting title themselves 2023-09-18 23:22:32 +02:00
Stypox
c076a0f771 Channels are now an Info
The previous "main" tab is now just a normal tab returned in getTabs().
Various part of the code that used to handle channels as ListInfo now either take the first (playable, i.e. with streams) tab (e.g. the ChannelTabPlayQueue), or take all of them combined (e.g. the feed).
2023-09-18 23:22:32 +02:00
ThetaDev
dfbd39e898 fix: limit channel header height 2023-09-18 23:22:32 +02:00
ThetaDev
b5893f3fa3 fix: notification menu option disappears when switching tabs 2023-09-18 23:22:32 +02:00
Stypox
e3614cb932 Move channel header to collapsible app bar 2023-09-18 23:22:32 +02:00
ThetaDev
193c3e5b3d fix: NPE in ChannelFragment::onSaveInstanceState 2023-09-18 23:22:32 +02:00
ThetaDev
c03c344f49 refactor: rename ChannelInfo to ChannelAbout
fix: localize about tab name
2023-09-18 23:22:32 +02:00
ThetaDev
25e3031830 cleanup: remove empty constructor from ChannelFragment 2023-09-18 23:22:31 +02:00
ThetaDev
b7911a8fd8 remove fragment_channel_info 2023-09-18 23:22:31 +02:00
ThetaDev
88384dc35e update extractor 2023-09-18 23:22:31 +02:00
ThetaDev
39b4ed082c refactor: common code from ChannelInfo/Description -> BaseInfoFragment 2023-09-18 23:22:31 +02:00
ThetaDev
d87aa23ae0 update NewPipeExtractor 2023-09-18 23:22:31 +02:00
ThetaDev
be548dcb52 fix: channel tab title not being set 2023-09-18 23:22:31 +02:00
ThetaDev
4357a34339 fix: ChannelFragment: save last tab 2023-09-18 23:22:31 +02:00
ThetaDev
2c03ba204e refactor: adjustments to updated tab extractor API 2023-09-18 23:22:31 +02:00
ThetaDev
2c98d079de fix: cache channel data 2023-09-18 23:22:31 +02:00
ThetaDev
16cd47fa2e fix: missing album tab key 2023-09-18 23:22:31 +02:00
ThetaDev
74a8bfba93 feat: add album tab 2023-09-18 23:22:31 +02:00
ThetaDev
c929f00456 fix: remember selected channel tab on screen rotation 2023-09-18 23:22:31 +02:00
ThetaDev
bb062f07f9 feat: add option to hide channel tabs 2023-09-18 23:22:31 +02:00
ThetaDev
c3d1e75a8f fix: scrollable channel description 2023-09-18 23:22:31 +02:00
ThetaDev
506e3724a6 fix: add progress spinners 2023-09-18 23:22:31 +02:00
ThetaDev
4859ab67d4 feat: prettier channel info page 2023-09-18 23:22:31 +02:00
ThetaDev
6d84d19520 fix: handle unsupported content 2023-09-18 23:22:31 +02:00
ThetaDev
8627efd0a1 fix: get notified menu option on all tabs 2023-09-18 23:22:31 +02:00
ThetaDev
6d13cf5e71 feat: add channel tabs 2023-09-18 23:22:31 +02:00
Rishab Aggarwal
7e2ab0d384 Improved downloading experience (#10407)
* added LoadingDialog for improving download experience

* [LoadingDialog] Apply some review comments and make title customizable.

* removed permission handling from loading Dialog

* fix checks

* remove <p> Tag from first sentence

---------

Co-authored-by: rishabaggarwal <Rishabaggarwal@sharechat.com>
Co-authored-by: TobiGr <tobigr@users.noreply.github.com>
2023-09-18 05:24:03 +05:30
TobiGr
19640d5e7c Add documentation to increase maintainablilty
Rename a variable
2023-09-18 01:45:53 +02:00
Edward
d1a82a85cd Include a high-resolution option in the default resolution settings. 2023-09-18 01:15:22 +02:00
Isira Seneviratne
b1ab261890 Merge pull request #10248 from Isira-Seneviratne/NIO_downloads
Improve the download helpers using the Java 7 NIO API.
2023-09-17 21:09:02 +05:30
Tobi
038278283a Merge pull request #10234 from TacoTheDank/bumpMisc
Update miscellaneous libraries
2023-09-17 16:35:40 +02:00
TacoTheDank
c74bd11a6f Update miscellaneous libraries 2023-09-17 15:43:43 +02:00
TobiGr
f2c2f1735e Replace RuntimeException with IOException
The RuntimeException was not explicitly declared and thus not caught at every call of this constructor. This change ensures that this possible exception is handled by the dedicated error handlers.
2023-09-17 15:31:19 +02:00
TobiGr
4e41e12bd2 Small code and doc improvements
Remove unnecessary else-branch and use Collections.isEmpty().
Add doc comment for splitFilename()
2023-09-17 15:31:19 +02:00
Isira Seneviratne
6df808f266 Use Path in the download helper classes. 2023-09-17 14:50:26 +02:00
Isira Seneviratne
2cb973f150 Use desugar_jdk_libs_nio. 2023-09-17 14:50:26 +02:00
Tobi
b5463cf5e1 Merge pull request #10406 from ShareASmile/fix-language-selector
Fix language Picker Selecting Wrong Languages
2023-09-09 00:52:07 +02:00
K Gill
862546205a fix wrongly placed uchinaguchi in language selector settings caus..
..ing language picker to select wrong languages
2023-09-08 16:33:17 +05:30
Audric V
7c1790bbfd Merge pull request #10396 from AudricV/one-stream-main-player-queue-button
Show play queue button in main player when there is one stream
2023-08-31 15:06:06 +02:00
AudricV
2d16a06bc4 Show play queue button in main player when there is one stream 2023-08-30 19:45:53 +02:00
Tobi
25cf917969 Merge pull request #10377 from TeamNewPipe/image-minimizer
Image minizier: replace Number.toFixed(0) with Math.floor()
2023-08-25 00:54:55 +02:00
Tobi
d09c650afd Merge pull request #10376 from TeamNewPipe/fix-string-formats
Fix string formats
2023-08-24 21:14:03 +02:00
AudricV
2b833c5250 Fix audio_track_name string formats 2023-08-24 20:41:11 +02:00
TobiGr
510db568eb Image minizier: replace Number.toFixed(0) with Math.floor()
Number.toFixed returns a string, Math.floor a number
2023-08-24 11:53:35 +02:00
Hosted Weblate
e4003c842b Translated using Weblate (Arabic)
Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Malayalam)

Currently translated at 6.6% (5 of 75 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (German)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (German)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Swedish)

Currently translated at 99.7% (684 of 686 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Albanian)

Currently translated at 82.7% (568 of 686 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (French)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (686 of 686 strings)

Added translation using Weblate (Burmese)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Slovak)

Currently translated at 98.9% (679 of 686 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (German)

Currently translated at 100.0% (686 of 686 strings)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Croatian)

Currently translated at 91.8% (628 of 684 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Czech)

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 (ryu (generated) (ryu))

Currently translated at 98.6% (675 of 684 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Urdu)

Currently translated at 74.2% (508 of 684 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.2% (679 of 684 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Galician)

Currently translated at 99.5% (681 of 684 strings)

Translated using Weblate (Finnish)

Currently translated at 89.9% (615 of 684 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (684 of 684 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Alexthegib <jcwkgxc@nightorb.com>
Co-authored-by: AudricV <AudricV@users.noreply.hosted.weblate.org>
Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Co-authored-by: Jani Kinnunen <janikinnunen340@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Joel A <joeax910@student.liu.se>
Co-authored-by: Jorge Pelaez <jorpelae@yahoo.co.jp>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Milan Šalka <salka.milan@googlemail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Sergio Marques <so.boston.android@gmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Shifa Graphics <shifagraphix@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: W L <wl@mailhole.de>
Co-authored-by: WB <dln0@proton.me>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kuragehime <kuragehime641@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: tellmeY18 <vysakh_b190622ec@nitc.ac.in>
Co-authored-by: thami simo <simo.azad@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ml/
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/uk/
Translation: NewPipe/Metadata
2023-08-23 21:29:25 +02:00
TobiGr
68957d3880 Fix grammar in JDoc 2023-08-22 16:23:22 +02:00
Tobi
e6747066ae Merge pull request #10360 from TeamNewPipe/improvement/tabSelected
Simplify `MainActivity.tabSelected(MenuItem)`
2023-08-22 10:57:14 +02:00
TobiGr
62f0abee47 Simplify MainActivity.tabSelected(MenuItem)
Rename variables and skip iterations if kiosk was found.
2023-08-19 21:58:44 +02:00
TobiGr
db5ed48dbb Fix some sonar warnings and make some smaller improvements 2023-08-14 23:09:50 +02:00
TobiGr
ba84e7eead Display "Unknown quality" if quality is unknown and not MediaFormat name 2023-08-14 23:06:32 +02:00
TobiGr
e51067177e Add tests for new methods retrieving MediaFormats
Fix failing tests
2023-08-14 23:06:32 +02:00
TobiGr
f3859ed710 Retrieve MediaFormat for streams that could not be extracted by the extractor 2023-08-14 23:06:32 +02:00
TobiGr
0db12e5561 Rename StreamSizeWrapper to StreamInfoWrapper 2023-08-14 22:48:39 +02:00
Stypox
ac5f991c0c Merge pull request #10331 from TeamNewPipe/improve_bug_template
Make "latest release" link more obvious to bug reporters
2023-08-12 19:46:15 +02:00
opusforlife2
4a0ff3f7ef Make latest release link more obvious to bug reporters 2023-08-12 15:08:03 +00:00
Stypox
601b1ef742 Merge pull request #10313 from mhmdanas/fix-capitalization-of-night-theme
Make capitalization of "Night theme" setting consistent with others
2023-08-07 23:07:48 +02:00
triallax
d957725805 Make capitalization of "Night theme" setting consistent with others
Been a pet peeve of mine for some time.
2023-08-07 20:40:33 +01:00
Stypox
4201723d10 Merge pull request #10304 from TeamNewPipe/fix/media.ccc.de
Adjust empty state message for ListInfoFragments depending on Info stream type
2023-08-06 10:07:33 +02:00
Stypox
bef79e77aa Update app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java 2023-08-06 10:07:13 +02:00
TobiGr
32f74273f0 Adjust empty state message for ListInfoFragments depending on Info stream type
Show "no streams" for SoundClound.
Show "no live streams" for MeidaCCCLiveStreamKiosk.
Otherwise show "no videos"
2023-08-05 03:50:28 +02:00
TobiGr
c69bcaafbb Fixed some Sonar warnings 2023-08-03 12:02:08 +02:00
Tobi
50d7d1b7b3 Merge pull request #10275 from J-Stutzmann/fix/audio-focus
Fix player audio focus not respecting mute
2023-08-03 11:55:40 +02:00
J-Stutzmann
c06d61a83c Made audio-focus calls respect mute state. 2023-08-02 23:44:23 -04:00
TobiGr
bc4f0c699f Ignore false positive inspection 2023-08-02 20:44:30 +02:00
Stypox
1e8efa7165 Merge pull request #10283 from TeamNewPipe/release/0.25.2
Release v0.25.2 (994)
2023-08-02 20:14:14 +02:00
Stypox
d4019f4b54 Update NewPipeExtractor to v0.22.7 2023-08-02 20:12:55 +02:00
TobiGr
3f0f66f106 Bump version to 0.25.2 (994) 2023-08-02 20:02:22 +02:00
Hosted Weblate
8f644e8aaf Translated using Weblate (Urdu)
Currently translated at 5.3% (4 of 75 strings)

Translated using Weblate (Urdu)

Currently translated at 73.2% (501 of 684 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Polish)

Currently translated at 61.3% (46 of 75 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (75 of 75 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (684 of 684 strings)

Translated using Weblate (Hindi)

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 (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 (Polish)

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 (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 (German)

Currently translated at 100.0% (684 of 684 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Shifa Graphics <shifagraphix@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: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: rickeesingh <rickeesingh231@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ur/
Translation: NewPipe/Metadata
2023-08-02 19:57:41 +02:00
TobiGr
27f77518fe Update NewPipe Extractor to 39a911db9f 2023-07-31 23:59:28 +02:00
Hosted Weblate
b56f3b3324 Translated using Weblate (Punjabi)
Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (French)

Currently translated at 93.2% (69 of 74 strings)

Translated using Weblate (Toki Pona)

Currently translated at 6.5% (45 of 683 strings)

Translated using Weblate (Toki Pona)

Currently translated at 2.7% (2 of 74 strings)

Translated using Weblate (French)

Currently translated at 100.0% (683 of 683 strings)

Added translation using Weblate (Toki Pona)

Translated using Weblate (ryu (generated) (ryu))

Currently translated at 96.3% (658 of 683 strings)

Translated using Weblate (English (United Kingdom))

Currently translated at 8.3% (57 of 683 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Hindi)

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 (Indonesian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Japanese)

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: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: John Donne <akheron@zaclys.net>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: William <Electroboss@users.noreply.hosted.weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: kuragehime <kuragehime641@gmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tok/
Translation: NewPipe/Metadata
2023-07-31 23:46:11 +02:00
TobiGr
0195655479 Add changelog for NewPipe 0.25.2 (994) 2023-07-31 23:43:41 +02:00
Tobi
3c91ec33ae Merge pull request #10122 from TeamNewPipe/fix/media-tunneling
Disable media tunneling by default on known unsupported devices
2023-07-31 23:30:24 +02:00
Tobi
6b3f51e5ea Merge pull request #10281 from TeamNewPipe/okio
Update com.squareup.okio:okio to 3.4.0
2023-07-31 23:29:39 +02:00
TobiGr
d6a1170ddb Replace settings migration with automatic check for device blacklist version 2023-07-31 23:00:54 +02:00
TobiGr
428a7d418b Update com.squareup.okio:okio to 3.4.0
Use okio 3.4.0 explicity to fix vulnerability introduced through okhttp3 (3.3.0).
See https://www.cve.org/CVERecord?id=CVE-2023-3635 for more details on the vulnerability.
2023-07-31 21:53:49 +02:00
TobiGr
40d102fcb5 Disable media tunneling by default on new devices
Sony BRAVIA_VH1, BRAVIA_VH2, BRAVIA_ATV2, BRAVIA_ATV3_4K
Phillips 4K (O)LED TV (PH7M_EU_5596)
Panasonic 4KTV-JUP (TX_50JXW834)
Bouygtel4K (HMB9213NW)
2023-07-29 22:08:51 +02:00
TobiGr
1db73370a7 Ensure that imports handle disabling media tunneling correctly
Store in preferences whether media tunneling was disabled automatically.
Show info in ExoPlayer settings if media tunneling was disabled autmatically.
2023-07-29 22:08:51 +02:00
TobiGr
8b63b437d8 Disable media tunneling if the device is known for not supporting it
Revert removing the Utils related to media tunneling.
2023-07-29 14:13:03 +02:00
TobiGr
78e577d260 Make some constants private and annotate params 2023-07-29 14:13:03 +02:00
Tobi
96a7cc2971 Merge pull request #10250 from kuragehimekurara1/dev
Added Uchinaguchi translation and README
2023-07-24 19:36:32 +02:00
TobiGr
9eedbae879 Fix ryu translation syntax 2023-07-24 19:33:27 +02:00
kuragehime
38d3b3c7ef Added Uchinaguchi (ryu) to language selector 2023-07-24 19:31:31 +02:00
kuragehime
e4d3b74f1b Added Uchinaguchi translation 2023-07-24 19:31:31 +02:00
TobiGr
54f3003a6f Added Uchinaguchi README
Co-authored-by:  kuragehime <kuragehime641@gmail.com>
2023-07-24 19:31:31 +02:00
TobiGr
cbc7b8ce18 Fix wrongly formatted string resource audio_track_name
Closes #10243
2023-07-24 19:14:00 +02:00
Hosted Weblate
ec7d01b794 Translated using Weblate (Swedish)
Currently translated at 72.9% (54 of 74 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Swedish)

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 (Indonesian)

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 (Japanese)

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 (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 (Portuguese (Brazil))

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 (Arabic)

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 (Italian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Dutch)

Currently translated at 64.8% (48 of 74 strings)

Translated using Weblate (German)

Currently translated at 81.0% (60 of 74 strings)

Translated using Weblate (Albanian)

Currently translated at 81.0% (552 of 681 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (French)

Currently translated at 93.2% (69 of 74 strings)

Translated using Weblate (Vietnamese)

Currently translated at 33.7% (25 of 74 strings)

Translated using Weblate (Bulgarian)

Currently translated at 66.5% (453 of 681 strings)

Translated using Weblate (Finnish)

Currently translated at 87.3% (595 of 681 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (German)

Currently translated at 81.0% (60 of 74 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Japanese)

Currently translated at 12.1% (9 of 74 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Vietnamese)

Currently translated at 32.4% (24 of 74 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Romanian)

Currently translated at 96.0% (654 of 681 strings)

Translated using Weblate (Japanese)

Currently translated at 99.7% (679 of 681 strings)

Translated using Weblate (Korean)

Currently translated at 12.1% (9 of 74 strings)

Translated using Weblate (Korean)

Currently translated at 12.1% (9 of 74 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (681 of 681 strings)

Translated using Weblate (German)

Currently translated at 79.7% (59 of 74 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (681 of 681 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AhHyeon An <toto1444@gmail.com>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Anonymous <deni76@tutanota.com>
Co-authored-by: Anxhelo Lushka <anxhelo1995@gmail.com>
Co-authored-by: Arsi Kiikka <arsikiikka20@gmail.com>
Co-authored-by: David Braz <davidbrazps2@gmail.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Etienne Barrier <etienne.barrier@gmail.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: MJ Kim <faith@users.noreply.hosted.weblate.org>
Co-authored-by: Philip Goto <philip.goto@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@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: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: kuragehime <kuragehime641@gmail.com>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: ngocanhtve <ngocanh.tve@gmail.com>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: zmni <zmni@outlook.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/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ja/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ko/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/vi/
Translation: NewPipe/Metadata
2023-07-24 19:04:23 +02:00
Tobi
3edd4c012d Merge pull request #10195 from AudricV/player_refactor-renderers-activation-or-deactivation
Refactor Player.useVideoSource logic and improve its comments
2023-07-22 14:12:35 +02:00
Tobi
3243f97ff2 Merge pull request #10233 from TeamNewPipe/actions/mimmizer-pr
Minimize images in PR descriptions
2023-07-20 23:18:03 +02:00
Isira Seneviratne
c658f28b02 Merge pull request #10078 from Isira-Seneviratne/Improve_feed_notifications
Improve new stream notifications
2023-07-20 06:39:19 +05:30
AudricV
5ab3a4a9e0 Refactor Player.useVideoSource logic and improve its comments
- don't check for isAudioOnly == !videoEnabled, as this prevents enabling again
video and text tracks renderers in some cases;
- when reloading play queue manager if that's needed, disable or enable video
and text tracks renderers, as they may need to be enabled again in some cases
like starting a video in main player, opening play queue, switching to
background player on it and switching back to main player;
- disable or enable video renderers also for streams with AUDIO_STREAM
StreamType, as doing so doesn't raise any issue and simplifies code;
- reword and move some comments to make them easier to understand.
2023-07-19 22:52:18 +02:00
Isira Seneviratne
cb00c57009 Set channel icon for stream notifications 2023-07-19 05:52:59 +05:30
Tobi
cd2884d412 Merge pull request #10235 from TacoTheDank/bumpRoom
Update AndroidX Room library
2023-07-18 22:35:30 +02:00
Tobi
471137093a Merge pull request #9719 from Marius1501/tabs_on_bottom
Added bottom main-tabs feature
2023-07-18 22:03:47 +02:00
Tobi
57064479c8 Merge pull request #8456 from SydneyDrone/database_tests
Add database test for SubscriptionManager
2023-07-18 08:55:35 +02:00
Stypox
528bd502b4 Improve SubscriptionManager tests
- fix checkstyle errors
- tests do not run in order, so each one has to do its own assertions separately from what others did
- the uid of an entity in the database needn't be the same of the one created in-memory, since the uid gets assigned upon inserting in the database
- some database functions return a `Completable` that doesn't do anything until it is subscribed to or awaited, so I added `.awaitBlocking()` where needed
- the data of an entity in-memory does not get updated automatically when the corresponding entity in the database is changed, so some tests have been removed
- `manager.insertSubscription` only inserts recent streams, so they need to have a date set on them (I also made related items hardcoded and not dependent on what the channel is currently doing)
2023-07-18 08:36:29 +02:00
SydneyDrone
90bc1905f5 Create SubscriptionManagerTest.java 2023-07-18 08:36:29 +02:00
TacoTheDank
a01e59e9db Update AndroidX Room library 2023-07-17 21:09:44 -04:00
TacoTheDank
3f944c1bb2 Fix MigrationTestHelper deprecation 2023-07-17 21:09:21 -04:00
Tobi
43ef852117 Merge pull request #10230 from TeamNewPipe/fix/offline-stream-chooser
[Download] Fix audio stream selection
2023-07-17 23:47:21 +02:00
TobiGr
bf22515bcd Fix README 2023-07-17 22:18:08 +02:00
Tobi
4c17c7b45b Merge pull request #10240 from TeamNewPipe/readmes
Add translated READMEs
2023-07-17 22:08:31 +02:00
TobiGr
ec21200787 Add links to all READMEs 2023-07-17 21:38:26 +02:00
TobiGr
25fea73704 Add Russian README
Taken from #8711 with updated screenshots

Co-authored-by:  Vik <63919734+ViktorOn@users.noreply.github.com>
2023-07-17 21:38:26 +02:00
TobiGr
2377d85efb Add German README
Taken from #8712 with updated screenshots and applied reviews.

Co-authored-by: Nico Haas <nico.haas@aisec.fraunhofer.de>
Co-authored-by: poolitzer <github@poolitzer.eu>
Co-authered-by: TobiGr <tobigr@users.noreply.github.com>
2023-07-17 21:38:26 +02:00
TobiGr
ddef550637 Add French README
Taken from #9296 with updated screenshots

Co-authored-by: eze-kiel <hugoblanc@fastmail.com>
2023-07-17 21:38:26 +02:00
Tobi
2f0ed7f3b7 Merge pull request #10232 from Stypox/leakcanary-fix
Fix LeakCanary startup in debug builds and fix a memory leak
2023-07-17 19:42:24 +02:00
TobiGr
b6bdd359d6 Add Assamese README
Taken from #9618 with updated screenshots

Co-authored-by:  Abhilash <121420261+WirelessAlien@users.noreply.github.com>
2023-07-17 18:54:38 +02:00
TobiGr
a4453bc699 Add Punjabi README
Taken from #9621 with updated screenshots.

Co-authored-by:  K Gill <60492161+ShareASmile@users.noreply.github.com>
2023-07-17 18:54:38 +02:00
TobiGr
3e87c40856 Add Italian README
Taken from #10157

Co-authored-by:  Mirko Di <84203046+mirk0dex@users.noreply.github.com>
2023-07-17 18:54:38 +02:00
Tobi
d80e531a2e Merge pull request #9421 from seojun0924/patch-2
Update README.ko.md
2023-07-17 16:28:48 +02:00
Tobi
d25e84a461 Merge pull request #9897 from rogerjs93/patch-1
Update README.es.md
2023-07-17 01:40:17 +02:00
TobiGr
05cc520665 Fix pure logo
The previous version was not properly vertically aligned. The default alignement from the logo is used now.
2023-07-17 01:28:55 +02:00
TobiGr
eeec6fd002 Replace null check with use of NotificationManagerCompat.from 2023-07-17 01:28:55 +02:00
Isira Seneviratne
795bc82c7f Show number of new streams in the collapsed summary notification. 2023-07-17 01:28:55 +02:00
Isira Seneviratne
7742c40ac0 Create individual stream notifications for convenience on Android 7.0 and later. 2023-07-17 01:28:55 +02:00
TobiGr
d9e2ada369 Minimize images in PR descriptions 2023-07-15 02:33:53 +02:00
Stypox
5d6158ea76 No need to manually mark fragment as destroyed for LeakCanary
It already does so automatically.
2023-07-14 20:48:05 +02:00
Stypox
00257e969e Fix PlayerService leakead by Binder instance
Also see https://stackoverflow.com/q/63787707
2023-07-14 18:34:20 +02:00
Stypox
135f0f7249 Make all leak canary libs debugImplementation-only 2023-07-14 18:32:30 +02:00
Stypox
fdd8b76add Fix DebugApp doing unneeded AppWatcher.manualInstall 2023-07-14 18:32:04 +02:00
TobiGr
6b7ffbba4c [Download] Fix audio stream selection
Closes #10180
2023-07-14 17:06:12 +02:00
Tobi
8cfba4003d Merge pull request #10229 from Koitharu/bugfix/feed_crash
Fix crash after feed update
2023-07-14 15:31:12 +02:00
Koitharu
01b46edf1a Fix crash after feed update 2023-07-14 11:41:52 +03:00
Stypox
f8599d17c2 Merge pull request #10085 from TacoTheDank/bumpLeakCanary
Update LeakCanary library
2023-07-12 19:05:38 +02:00
Stypox
5c7a9a52f5 Merge pull request #10223 from TacoTheDank/cleanAlertDialogs
Clean up AlertDialogs
2023-07-12 19:02:57 +02:00
TacoTheDank
c1f0a945c0 Clean up AlertDialogs 2023-07-11 21:54:10 -04:00
TacoTheDank
db7de05f2b Update LeakCanary library 2023-07-11 20:32:29 -04:00
Stypox
e33bb676f9 Merge pull request #10219 from TeamNewPipe/PR-template-wiki-link
Add link to wiki page for APK download
2023-07-08 23:01:48 +02:00
Tobi
30724dbc50 Add link to wiki page for APK download 2023-07-08 22:49:10 +02:00
Stypox
e765343162 Merge pull request #10166 from TeamNewPipe/fix/image-workflow
Add support for new GitHub assets URLs in image minimizer workflow
2023-07-08 22:18:16 +02:00
Tobi
62ce0b0408 Merge pull request #10213 from Stypox/update-screenshots
Update screenshots
2023-07-08 12:33:59 +02:00
Stypox
3bbc606694 Update screenshots in translated READMEs 2023-07-07 20:57:42 +02:00
Stypox
56eec9fed1 Add separation between tablet and phone images 2023-07-07 20:57:42 +02:00
Stypox
ea0d798ea0 Update README screenshots 2023-07-07 20:57:41 +02:00
Stypox
5716d51112 Update screenshots 2023-07-07 20:57:41 +02:00
Tobi
d845a158f0 Merge pull request #10200 from TeamNewPipe/fix/acra
Update ACRA and Checkstyle to fix a dependency vulnerability
2023-07-02 00:16:54 +02:00
TobiGr
1a2fbd8122 Update acra and checkstyle fixing vulnerability in dependency com.google.guava
See https://app.snyk.io/org/thescrabi/project/27dc214e-7f4f-47bb-a77c-443201491254
2023-07-01 13:30:37 +02:00
TobiGr
8bdeed8f28 Add support for new GitHub assetes URLs in image minimizer workflow 2023-06-15 16:03:30 +02:00
Tobi
3c87462203 Merge pull request #10164 from TeamNewPipe/weblate
Update weblate & fix conflicts
2023-06-14 12:55:16 +02:00
TobiGr
3622438a9d Translated using Weblate (Arabic)
Currently translated at 55.4% (41 of 74 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Malayalam)

Currently translated at 83.7% (572 of 683 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Swedish)

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 (French)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Tigrinya)

Currently translated at 2.1% (15 of 683 strings)

Translated using Weblate (Tigrinya)

Currently translated at 4.0% (3 of 74 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 22.2% (152 of 683 strings)

Translated using Weblate (Turkish)

Currently translated at 98.8% (675 of 683 strings)

Added translation using Weblate (Tigrinya)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (683 of 683 strings)

Added translation using Weblate (Kannada)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 13.4% (92 of 683 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Korean)

Currently translated at 12.1% (9 of 74 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (683 of 683 strings)

Added translation using Weblate (English (Middle))

Added translation using Weblate (English (Old))

Added translation using Weblate (Sicilian)

Added translation using Weblate (Aymara)

Added translation using Weblate (Arabic (Najdi))

Added translation using Weblate (Kashmiri)

Added translation using Weblate (German (Low))

Translated using Weblate (Korean)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Latvian)

Currently translated at 93.7% (640 of 683 strings)

Translated using Weblate (Dutch)

Currently translated at 64.8% (48 of 74 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 95.9% (71 of 74 strings)

Translated using Weblate (German)

Currently translated at 74.3% (55 of 74 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (683 of 683 strings)

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

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (683 of 683 strings)

Deleted translation using Weblate (Kashmiri)

Deleted translation using Weblate (Arabic (Najdi))

Deleted translation using Weblate (Aymara)

Deleted translation using Weblate (Sicilian)

Deleted translation using Weblate (English (Old))

Deleted translation using Weblate (English (Middle))

Deleted translation using Weblate (German (Low))

Translated using Weblate (Belarusian)

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 (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 (Slovak)

Currently translated at 17.5% (13 of 74 strings)

Translated using Weblate (French)

Currently translated at 90.5% (67 of 74 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 (Hebrew)

Currently translated at 99.2% (678 of 683 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Portuguese (Brazil))

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 100.0% (683 of 683 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Slovak)

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 (Italian)

Currently translated at 97.2% (664 of 683 strings)

Translated using Weblate (Hungarian)

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 (German)

Currently translated at 100.0% (683 of 683 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AhHyeon An <toto1444@gmail.com>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Alexthegib <jcwkgxc@nightorb.com>
Co-authored-by: Arnis Jaundzeikars <sangsatori@theradiant.space>
Co-authored-by: AudricV <AudricV@users.noreply.hosted.weblate.org>
Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Co-authored-by: Domokun <domokun@asdasd.nl>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Olivia Ng <uloo592@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: Surfoo <surfooo@gmail.com>
Co-authored-by: TobiGr <tobigr@mail.de>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: ai <woldu@duck.com>
Co-authored-by: atilluF <110931720+atilluF@users.noreply.github.com>
Co-authored-by: ctntt <pavlov_mainstreamed@slmail.me>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: gbpu <gui.beppu@gmail.com>
Co-authored-by: gymka <gymka@archlinux.lt>
Co-authored-by: jeffin-v <jeffin@posteo.net>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: thami simo <simo.azad@gmail.com>
Co-authored-by: tryvseu <tryvseu@tuta.io>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: 이정희 <daemul72@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/az/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ko/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ti/
Translation: NewPipe/Metadata

Translated using Weblate (Hungarian)

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 (Arabic)

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 (Hindi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (683 of 683 strings)

Translated using Weblate (Galician)

Currently translated at 99.7% (681 of 683 strings)

Translated using Weblate (Hungarian)

Currently translated at 17.5% (13 of 74 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/

Translated using Weblate (Hindi)

Currently translated at 100.0% (74 of 74 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/

Translated using Weblate (N’Ko)

Currently translated at 98.5% (673 of 683 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (683 of 683 strings)
2023-06-14 12:01:36 +02:00
Isira Seneviratne
1848892ff8 Merge pull request #10076 from Isira-Seneviratne/Remove_unused_resources
Remove unused resources
2023-06-09 12:49:45 +05:30
Tobi
72c6ed2804 Merge pull request #10066 from Stypox/swap-subchannel-avatar
Fix uploader and subchannel avatars being swapped and disable loading thumbnail message failure on content details page
2023-06-05 23:24:12 +02:00
Tobi
42de2c7033 Merge pull request #10141 from quarthex/add-peertube.stream
handle links to the PeerTube instance “peertube.stream”
2023-06-05 23:20:38 +02:00
Romain
6bcc8691fa handle links to the PeerTube instance “peertube.stream”
also sort the lines, because it will quickly become a mess otherwise
2023-06-05 20:34:55 +02:00
Isira Seneviratne
6cf13ed8fb Merge pull request #10087 from TacoTheDank/bumpLibraries
Update some libraries
2023-06-02 08:49:12 +05:30
Isira Seneviratne
ad75db40df Merge pull request #10088 from TacoTheDank/organizeProguard
Organize the proguard file
2023-06-02 06:00:22 +05:30
TacoTheDank
4e3bf3c2f9 Update some libraries 2023-05-30 12:22:05 -04:00
Stypox
1925687f18 Merge pull request #10089 from TacoTheDank/fixUnresolvedExtractor
Fix unresolved extractor
2023-05-26 11:55:41 +02:00
Stypox
577301c4eb Proper filename for questions discussion template 2023-05-26 11:52:26 +02:00
Tobi
c87b42de1c Merge pull request #10120 from Stypox/move-questions
Move questions to Discussions
2023-05-26 11:15:01 +02:00
Stypox
c8e8915c2e Move questions to Discussions 2023-05-26 11:05:32 +02:00
Stypox
17cdedfa85 Merge pull request #10119 from Stypox/rewrite-announcement
Add rewrite announcement to readme
2023-05-26 10:35:37 +02:00
Stypox
677bb4070f Add rewrite announcement to readme 2023-05-26 10:34:33 +02:00
TacoTheDank
fe82029dc7 Fix unresolved extractor 2023-05-12 01:12:12 -04:00
TacoTheDank
0ab9961908 Organize the proguard file 2023-05-12 01:09:08 -04:00
Isira Seneviratne
ecbf5d5ead Remove unused resources. 2023-05-08 06:27:41 +05:30
Tobi
df430badbc Merge pull request #10042 from MBKaba/patch-1
add language ߒߞߏ (nqo)
2023-05-06 23:28:55 +02:00
Tobi
8639972a54 Merge pull request #10074 from TeamNewPipe/weblate
Update translations
2023-05-06 23:03:54 +02:00
TobiGr
41038f452d Remove translations of previously deleted string brightness_gesture_control_summary 2023-05-06 02:01:54 +02:00
TobiGr
2f31ea8864 Remove translations of previously deleted string brightness_gesture_control_title 2023-05-06 01:58:33 +02:00
TobiGr
e831059162 Remove translations of previously deleted string volume_gesture_control_summary 2023-05-06 01:55:36 +02:00
TobiGr
e109e8cf1c Remove translations of previously deleted string volume_gesture_control_title 2023-05-06 01:52:31 +02:00
TobiGr
f1524b6aba Remove translations of previously deleted string feed_toggle_show_played_items 2023-05-06 01:48:16 +02:00
TobiGr
51ee6f87e0 Remove translations of previously deleted string feed_toggle_hide_played_items 2023-05-06 01:48:08 +02:00
TobiGr
0bb3e7cb86 Translated using Weblate (Belarusian)
Currently translated at 6.7% (5 of 74 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 12.9% (86 of 664 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 99.3% (660 of 664 strings)

Translated using Weblate (Estonian)

Currently translated at 99.6% (662 of 664 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (664 of 664 strings)

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

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (German)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 0.0% (0 of 74 strings)

Translated using Weblate (N’Ko)

Currently translated at 8.9% (59 of 661 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.6% (659 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Added translation using Weblate (N’Ko)

Translated using Weblate (Bambara)

Currently translated at 0.1% (1 of 661 strings)

Translated using Weblate (Bambara)

Currently translated at 1.3% (1 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (74 of 74 strings)

Added translation using Weblate (Bambara)

Merge branch 'origin/dev' into Weblate.

Translated using Weblate (Estonian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Alexthegib <jcwkgxc@nightorb.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Bakary Kaba <mbkaba@live.fr>
Co-authored-by: Bdd55oo <giggzuv9z.eofjx@aleeas.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Hoàng Lâm Lê <work.lehoanglam@gmail.com>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Olivia Ng <uloo592@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Retrial <giwrgosmant@gmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: mono <monodevx@gmail.com>
Co-authored-by: random r <epsilin@yopmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/be/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bm/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nqo/
Translation: NewPipe/Metadata

Translated using Weblate (German)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (French)

Currently translated at 99.3% (660 of 664 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Catalan)

Currently translated at 93.2% (619 of 664 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 41.4% (275 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 4.0% (3 of 74 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nqo/

Translated using Weblate (Dutch)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Turkish)

Currently translated at 99.3% (660 of 664 strings)

Translated using Weblate (Georgian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 67.9% (451 of 664 strings)

Translated using Weblate (French)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (French)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 98.9% (657 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 84.6% (562 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Turkish)

Currently translated at 99.5% (661 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (French)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (German)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 100.0% (664 of 664 strings)

Translated using Weblate (N’Ko)

Currently translated at 5.4% (4 of 74 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nqo/

Translated using Weblate (N’Ko)

Currently translated at 9.4% (7 of 74 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nqo/
2023-05-06 01:47:58 +02:00
Tobi
4bf063645a Merge pull request #10067 from Stypox/update-gradle-again
Update Android Gradle Plugin to 8.0.1
2023-05-04 10:33:57 +00:00
Stypox
9866eab60f Update Android Gradle Plugin to 8.0.1 2023-05-03 11:18:12 +02:00
Stypox
10c42de2f1 Fix uploader and subchannel avatars swapped 2023-05-03 10:35:28 +02:00
Stypox
e1fd25fb71 Merge pull request #10046 from Stypox/ktlint-java17
Fix ktlint formatter after upgrade to Java 17
2023-05-02 13:43:44 +02:00
Stypox
2315b082ff Merge pull request #9937 from Theta-Dev/alang-selector
Add support for multiple audio tracks
2023-05-02 10:07:21 +02:00
AudricV
023f6166ab Add Open in browser button to audio external players dialog
This change makes the dialog consistent with the video one.
2023-05-02 00:18:46 +02:00
AudricV
d89a3c6c4d Remove "default" from audio track already present message
We don't know if, on muxed video streams we get for all services which support
multiple audio languages, that the audio language returned is the original one
or not, even if it should be the case.

In order to avoid saying potential false information, this word has been
removed from the string resource (ID and value) and the corresponding layout ID
in the download dialog.
2023-05-02 00:11:09 +02:00
ThetaDev
fb00ee8cf9 [YouTube] Improve download speed (#9948) 2023-05-01 19:26:42 +02:00
ThetaDev
22671ca16c fix: audio stream cache key, code fmt 2023-05-01 00:04:04 +02:00
ThetaDev
4e837e838d fix docs in app/src/main/java/org/schabi/newpipe/util/Localization.java
Co-authored-by: Audric V. <74829229+AudricV@users.noreply.github.com>
2023-05-01 00:02:37 +02:00
Tobi
ed1781133c Merge pull request from GHSA-r3gv-6fw7-hc52
Fix CI command injection vulnerability
2023-04-27 22:51:54 +02:00
MBKaba
60fc662a26 Update settings_keys.xml
Add ߒߞߏ (nqo) language code to <string-array name="app_language_code">

Add ߒߞߏ (nqo) language name to <string-array name="app_language_name">
2023-04-27 12:21:59 +00:00
Stypox
43b0167a3a Fix CI command injection vulnerability
See https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions
2023-04-26 16:01:20 +02:00
Stypox
8519897089 Fix ktlint formatter after upgrade to Java 17
See https://github.com/pinterest/ktlint/issues/1195 and https://github.com/ScoopInstaller/Extras/issues/10313. Note that although this should have been fixed in the latest version of ktlint (we are using an old one), the fix doesn't seems to have worked for me.
2023-04-25 18:37:04 +02:00
MBKaba
60a5d02018 add language ߒߞߏ (nqo)
The translation is already done:
https://hosted.weblate.org/projects/newpipe/strings/nqo/
2023-04-24 10:44:26 +00:00
ThetaDev
c377ffbce8 Merge branch 'dev' of github.com:TeamNewPipe/NewPipe into alang-selector 2023-04-21 23:32:33 +02:00
ThetaDev
b567d428ad fix: small codestyle fixes 2023-04-21 23:15:37 +02:00
Stypox
da30e539df Merge pull request #9748 from TeamNewPipe/feat/av1-tags
Add whitelist to only retrieve supported YouTube itags/streams
2023-04-20 16:42:31 +02:00
Isira Seneviratne
f74d794b2a Merge pull request #10035 from Stypox/update-gradle
Upgrade Gradle and AGP from 7.x to 8.x and use Java 17
2023-04-20 19:55:31 +05:30
Stypox
69ef4a987e Update CI Java version 2023-04-20 15:42:33 +02:00
Stypox
78e1e0508e Fix gradle build for Java 17 and 19 2023-04-20 11:19:21 +02:00
Stypox
6d98ad7abc Further upgrade gradle to 8.1 2023-04-20 10:50:48 +02:00
Stypox
70b3ba310a Upgrade to Gradle 8.0 2023-04-20 10:36:23 +02:00
ThetaDev
2edc223e77 Merge branch 'dev' into alang-selector 2023-04-17 23:01:07 +02:00
TobiGr
e18a6b09f8 Apply new itag filter only to YouTube streams 2023-04-17 13:10:29 +02:00
TobiGr
f8c3ec4be7 Use a whitelist to filter all streams retrieved by the extractor.
NewPipe Extractor now extracts all YouTube Itags and therefore only those which can be handled by the player need to be retrieved from the list of all available streams.
2023-04-17 13:00:11 +02:00
Stypox
ba3afd1e35 Merge pull request #10021 from Isira-Seneviratne/PendingIntentCompat
Switch to AndroidX's PendingIntentCompat.
2023-04-14 14:20:47 +02:00
Isira Seneviratne
20f0011921 Fix Sonar failure. 2023-04-13 10:53:46 +05:30
Isira Seneviratne
acebabd028 Use AndroidX's PendingIntentCompat class. 2023-04-13 10:53:46 +05:30
Stypox
6243f34946 Merge pull request #8875 from AudricV/exoplayer-settings
Add an ExoPlayer settings page
2023-04-10 17:40:33 +02:00
AudricV
787758a436 [Android 6+] Add ability to always use ExoPlayer's MediaVideoCodecRenderer setOutputSurface workaround
As some devices not present in ExoPlayer's list may not implement
MediaCodec.setOutputSurface(Surface) properly, this workaround could be useful
on these devices.

It forces ExoPlayer to fall back on releasing and re-instantiating video codec
instances, which is always used on Android 5 and lower due to addition of this
method in Android 6.

To do so, a CustomMediaCodecVideoRenderer, based on ExoPlayer's
MediaVideoCodecRenderer which always return true for the
codecNeedsSetOutputSurfaceWorkaround method has been added, which is used in
CustomRenderersFactory, a class based on DefaultRenderersFactory which always
returns our CustomMediaCodecVideoRenderer as the video renderers.

CustomRenderersFactory replaces DefaultRenderersFactory in the player, in the
case this setting is enabled.
2023-04-10 17:39:27 +02:00
AudricV
a02b92fd59 Update playback load interval size setting description
- Remove redundant player restart requirement note, as it is written on the
ExoPlayer settings description page;
- Add precision about the setting effect/limitation, as it only applies on
progressive contents/media sources and not on every content/media source;
- Remove translations of this description, to ensure that they will be updated
by translators.
2023-04-10 17:39:25 +02:00
AudricV
a6ff85a208 Move media tunneling setting to ExoPlayer settings and make this setting available on release builds
Media tunneling may be not supported by more devices than the ones we
whitelisted before.

As a matter of fact, the list of devices on which media tunneling is disabled
could be not maintainable in the future, especially if the list of devices
grows more and more.

A preferable solution is to allow users to configure this setting themselves,
allowing them to not wait for their device(s) to be whitelisted in a future
NewPipe update.

This solution has been applied in this commit and works on every build type.

The corresponding preference in the debug settings has been of course removed
and the code used to prevent media tunneling activation on specific devices has
been removed.
2023-04-10 17:37:30 +02:00
AudricV
41da8fc05f Add ability to use ExoPlayer's decoder fallback option
This option could help to avoid decoder initialization issues, which falls back
to lower-priority decoders if decoder initialization fails. This may result in
poor playback performance than when using primary decoders.

It is disabled by default, but can be enabled in ExoPlayer settings.
2023-04-10 17:37:30 +02:00
AudricV
a4a9957a15 Add ExoPlayerSettingsFragment and move playback load interval size setting into it
This fragment has been added into SettingsResourceRegistry, to allow searches
in its options.

It has been placed at the place of the previous playback load interval size
setting (so in Video and Audio settings).
2023-04-10 17:37:30 +02:00
Stypox
29318c64ed Merge pull request #10004 from TeamNewPipe/fix/apk-jsoup
Remove jsoup files from APK
2023-04-10 17:22:20 +02:00
Isira Seneviratne
74bd28cbd9 Update AndroidX Core to 1.10.0. 2023-04-09 18:45:57 +05:30
ThetaDev
365bb2d0e4 Merge branch 'dev' of github.com:TeamNewPipe/NewPipe into alang-selector 2023-04-05 14:06:14 +02:00
TobiGr
c08538d25d Remove jsoup files from APK
Two jsoup files slipped into the META-INF dir of the APK for some reason. README.md and CHANGES are removed automatically now.
2023-04-04 17:42:34 +02:00
Stypox
140ea8642c Merge pull request #10002 from Stypox/readme-notice
Add notice to README to not open feature PRs
2023-04-04 14:58:27 +02:00
Stypox
445d364193 Merge pull request #9708 from Marius1501/switch_setting_brightness_volume
Created a setting to switch the sides of volume and brightness
2023-04-04 14:19:08 +02:00
Stypox
4bb45c001d Fix settings migration 2023-04-04 11:06:20 +02:00
Stypox
7350b1f32e Add notice to README to not open feature PRs 2023-04-04 10:54:00 +02:00
Stypox
4a33ee6045 Merge pull request #10001 from Stypox/remove-exoplayer-from-changelogs
Remove "ExoPlayer settings" from 0.25.1 changelogs
2023-04-04 10:09:45 +02:00
Stypox
704e9bd7b6 Fix checkstyle 2023-04-04 10:02:01 +02:00
ge78fug
d2735607b8 Changed the default of the switches 2023-04-04 09:57:06 +02:00
Marius Wagner
3c72992c39 Update app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java
Co-authored-by: Stypox <stypox@pm.me>
2023-04-04 09:57:06 +02:00
ge78fug
7689d1d15c Added the migration 2023-04-04 09:57:06 +02:00
ge78fug
65d8589e7a Changed the naming 2023-04-04 09:57:06 +02:00
ge78fug
32cec6c9a7 Changed the naming 2023-04-04 09:57:06 +02:00
Marius Wagner
72ca52a29b Made the requested changes 2023-04-04 09:57:06 +02:00
ge78fug
2ded8c7cc1 Made two list options 2023-04-04 09:57:06 +02:00
ge78fug
759a9080a8 Fixed a bug 2023-04-04 09:57:06 +02:00
ge78fug
2ba649949f Updated the gesture-switch-toggle 2023-04-04 09:57:06 +02:00
ge78fug
c8d54ec6c7 Changed to val 2023-04-04 09:57:06 +02:00
Marius Wagner
96e9242431 Update app/src/main/java/org/schabi/newpipe/player/gesture/MainPlayerGestureListener.kt
Co-authored-by: Stypox <stypox@pm.me>
2023-04-04 09:57:06 +02:00
ge78fug
3c74cb3439 Created a setting to switch the sides of volume and brightness 2023-04-04 09:57:06 +02:00
Stypox
7a8116b2cf Remove "ExoPlayer settings" from 0.25.1 changelogs
Also remove "hi" changelog completely, as it was not really translated
2023-04-04 09:47:51 +02:00
ThetaDev
d010384c88 Merge branch 'dev' of github.com:TeamNewPipe/NewPipe into alang-selector 2023-04-03 22:13:16 +02:00
Stypox
07111d86d4 Merge pull request #9869 from TeamNewPipe/release-0.25.1
Release v0.25.1 (993)
2023-04-03 14:50:23 +02:00
Hosted Weblate
ec974a2b3d Translated using Weblate (Estonian)
Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Olivia Ng <uloo592@gmail.com>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
2023-04-03 14:49:41 +02:00
Stypox
02906e8132 Merge pull request #9812 from TeamNewPipe/revert-8894-WindowCompat
Revert "Use WindowCompat."
2023-04-03 14:23:17 +02:00
Stypox
6f428d0c6b Merge pull request #9890 from Redirion/bumpexo184
Bump ExoPlayer to 2.18.5
2023-04-03 14:11:15 +02:00
TobiGr
41da2bfb00 Bump NewPipe Extractor to 0.22.6 2023-04-02 23:02:19 +02:00
TobiGr
746b1f7eb2 Merge branch 'dev' into release-0.25.1 2023-04-02 22:54:00 +02:00
Hosted Weblate
03fd286956 Translated using Weblate (Odia)
Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Swedish)

Currently translated at 59.4% (44 of 74 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (74 of 74 strings)

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

Currently translated at 18.9% (14 of 74 strings)

Translated using Weblate (Danish)

Currently translated at 98.3% (650 of 661 strings)

Translated using Weblate (Belarusian)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Korean)

Currently translated at 99.8% (660 of 661 strings)

Translated using Weblate (French)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (German)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Indonesian)

Currently translated at 74.3% (55 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 98.6% (73 of 74 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.6% (73 of 74 strings)

Translated using Weblate (Basque)

Currently translated at 43.2% (32 of 74 strings)

Translated using Weblate (Dutch (Belgium))

Currently translated at 85.6% (566 of 661 strings)

Translated using Weblate (Belarusian)

Currently translated at 92.7% (613 of 661 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Latvian)

Currently translated at 89.7% (593 of 661 strings)

Translated using Weblate (Malay)

Currently translated at 54.3% (359 of 661 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 98.3% (650 of 661 strings)

Translated using Weblate (Vietnamese)

Currently translated at 97.7% (646 of 661 strings)

Translated using Weblate (Lithuanian)

Currently translated at 97.4% (644 of 661 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Korean)

Currently translated at 99.8% (660 of 661 strings)

Translated using Weblate (Hungarian)

Currently translated at 97.4% (644 of 661 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (English)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Assamese)

Currently translated at 14.8% (98 of 661 strings)

Translated using Weblate (Georgian)

Currently translated at 96.6% (639 of 661 strings)

Translated using Weblate (Bosnian)

Currently translated at 17.8% (118 of 661 strings)

Translated using Weblate (Gujarati)

Currently translated at 9.9% (66 of 661 strings)

Translated using Weblate (Marathi)

Currently translated at 8.4% (56 of 661 strings)

Translated using Weblate (Odia)

Currently translated at 99.8% (660 of 661 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Bengali)

Currently translated at 87.7% (580 of 661 strings)

Translated using Weblate (Bengali (India))

Currently translated at 45.9% (304 of 661 strings)

Translated using Weblate (Filipino)

Currently translated at 34.9% (231 of 661 strings)

Translated using Weblate (Danish)

Currently translated at 97.5% (645 of 661 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Belarusian)

Currently translated at 91.2% (603 of 661 strings)

Translated using Weblate (Belarusian)

Currently translated at 91.2% (603 of 661 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Albanian)

Currently translated at 83.9% (555 of 661 strings)

Translated using Weblate (Dutch (Belgium))

Currently translated at 85.3% (564 of 661 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Catalan)

Currently translated at 93.3% (617 of 661 strings)

Translated using Weblate (Bulgarian)

Currently translated at 68.9% (456 of 661 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Finnish)

Currently translated at 90.0% (595 of 661 strings)

Translated using Weblate (Croatian)

Currently translated at 96.2% (636 of 661 strings)

Translated using Weblate (Vietnamese)

Currently translated at 97.7% (646 of 661 strings)

Translated using Weblate (Hebrew)

Currently translated at 98.7% (653 of 661 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Asturian)

Currently translated at 71.5% (473 of 661 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Dutch)

Currently translated at 98.3% (650 of 661 strings)

Translated using Weblate (French)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (German)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (English)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Korean)

Currently translated at 10.8% (8 of 74 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Belarusian)

Currently translated at 84.2% (557 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 95.9% (71 of 74 strings)

Translated using Weblate (Belarusian)

Currently translated at 78.9% (522 of 661 strings)

Translated using Weblate (Persian)

Currently translated at 99.3% (657 of 661 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Filipino)

Currently translated at 34.9% (231 of 661 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (French)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Russian)

Currently translated at 89.1% (66 of 74 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Sinhala)

Currently translated at 3.4% (23 of 661 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 64.8% (48 of 74 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Polish)

Currently translated at 60.8% (45 of 74 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (74 of 74 strings)

Translated using Weblate (Russian)

Currently translated at 78.3% (58 of 74 strings)

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

Currently translated at 18.9% (14 of 74 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (661 of 661 strings)

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

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (661 of 661 strings)

Translated using Weblate (German)

Currently translated at 100.0% (661 of 661 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Alexthegib <jcwkgxc@nightorb.com>
Co-authored-by: Alfred Makne Poulsen <alfred@omj.dk>
Co-authored-by: Cyndaquissshhh <iversonbriones123@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Igor Sorocean <sorocean.igor@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Maday <royalcoolness7898@gmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Olivia Ng <uloo592@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: Rex_sa <rex.sa@pm.me>
Co-authored-by: Rui Martins <martins.ro@gmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: Sean Minnaert <sean.minnaert@gmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Simon Nilsson <Observeramera@pm.me>
Co-authored-by: Subham Jena <subhamjena8465@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: WB <dln0@proton.me>
Co-authored-by: Xəyyam Qocayev <xxmn77@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: fincent <fincentpm@protonmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: jc <jcwkgxc@nightorb.com>
Co-authored-by: komiratsu192 <502badgateway@duck.com>
Co-authored-by: nautilusx <translate@disroot.org>
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: tndsG <tharushtnds@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Co-authored-by: 모르것다 <jjs4809@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/az/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ko/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2023-04-02 22:48:15 +02:00
ThetaDev
39a5c8bdfb fix: reset video stream sizes on audio track selection 2023-03-29 13:39:29 +02:00
Audric V
fb1b1c5be1 Merge pull request #9968 from AudricV/fix-open-in-browser-without-browser
Use a system chooser when opening links in browser in the case there is no browser available
2023-03-26 12:41:42 +02:00
AudricV
1a8aa8b17e Use a system chooser when opening links in browser in the case there is no browser available
This change makes the app using the behavior when there is no default browser
on Android 11 and lower, by opening a system chooser when there is no browser
available (on all Android versions).

Also catch any exception when the system chooser cannot be opened and show the
"No app on your device can open this" toast in this case, as an
`ActivityNotFoundException` could be thrown if no app is available to open a
given web link.
2023-03-26 00:04:38 +01:00
Robin
2317864422 Bump ExoPlayer to 2.18.5 2023-03-23 15:03:07 +01:00
ThetaDev
694418d30d fix: update stream sizes when audio track changed 2023-03-21 16:58:36 +01:00
ThetaDev
ed06f559ae feat: add track selection to downloader 2023-03-20 21:41:28 +01:00
ThetaDev
fdd3b03fe5 fix: audio stream format selection 2023-03-19 23:47:33 +01:00
ThetaDev
dbd6e4d11f fix: sonarcloud lint 2023-03-19 22:55:37 +01:00
ThetaDev
61a14765f3 fix: ListHelper tests 2023-03-19 22:31:31 +01:00
ThetaDev
9b8ffdd2aa fix: improve track name localization 2023-03-19 21:20:21 +01:00
ThetaDev
ef0a4cf8b2 feat: add external audio playback language selector 2023-03-19 21:05:48 +01:00
ThetaDev
7aed2eed8a feat: add prefer original option, improve audio stream ordering 2023-03-19 20:40:27 +01:00
ThetaDev
87a88e4df7 feat: localized audio track names 2023-03-19 15:45:52 +01:00
ThetaDev
366c39d4c6 feat: add language selector to audio player 2023-03-19 01:15:36 +01:00
ThetaDev
77649d388c fix: reduce complexity 2023-03-18 16:29:22 +01:00
ThetaDev
dba53d23aa fix: remove todo 2023-03-18 16:14:07 +01:00
ThetaDev
208887d538 feat: improve audio track sorting, add prefer_descriptive_audio option 2023-03-18 14:50:19 +01:00
Isira Seneviratne
0cd1a86aa5 Merge pull request #9872 from TeamNewPipe/fix-lint
Remove wrong annotation
2023-03-18 15:00:34 +05:30
ThetaDev
de7872d8f2 feat: add audio language selector 2023-03-17 21:51:40 +01:00
Roger Salas
bb1f5d8f38 Update README.es.md 2023-03-08 19:27:13 +02:00
Robin
7c39421297 bump ExoPlayer to 2.18.4 2023-03-06 16:49:43 +01:00
TobiGr
d06cc862c8 Remove wrong annotation 2023-03-03 11:58:44 +01:00
Stypox
c5cf2f4514 Release v0.25.1 (993) 2023-03-01 10:52:05 +01:00
Stypox
3f8e44dc66 Update NewPipeExtractor 2023-03-01 10:51:17 +01:00
Stypox
d33229a3b8 Add changelog for v0.25.1 (993) 2023-03-01 10:45:25 +01:00
Hosted Weblate
bb57f9cc9d Merge branch 'origin/dev' into Weblate.
Translated using Weblate (Hindi)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 99.8% (654 of 655 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.8% (654 of 655 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (German)

Currently translated at 100.0% (655 of 655 strings)

Translated using Weblate (Russian)

Currently translated at 75.3% (55 of 73 strings)

Translated using Weblate (Belarusian)

Currently translated at 74.4% (487 of 654 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 99.8% (653 of 654 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.2% (649 of 654 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Slovenian)

Currently translated at 64.2% (420 of 654 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (English)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Belarusian)

Currently translated at 6.8% (5 of 73 strings)

Translated using Weblate (Belarusian)

Currently translated at 74.3% (486 of 654 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Vietnamese)

Currently translated at 98.4% (644 of 654 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (654 of 654 strings)

Merge branch 'origin/dev' into Weblate.

Translated using Weblate (Bengali)

Currently translated at 21.9% (16 of 73 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 69.8% (51 of 73 strings)

Translated using Weblate (Portuguese)

Currently translated at 69.8% (51 of 73 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Dutch)

Currently translated at 65.7% (48 of 73 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 28.7% (21 of 73 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (654 of 654 strings)

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

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (653 of 654 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Basque)

Currently translated at 45.2% (33 of 73 strings)

Translated using Weblate (German)

Currently translated at 73.9% (54 of 73 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.8% (653 of 654 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (French)

Currently translated at 99.6% (652 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 15.0% (11 of 73 strings)

Translated using Weblate (German)

Currently translated at 73.9% (54 of 73 strings)

Translated using Weblate (Thai)

Currently translated at 32.0% (209 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 15.0% (11 of 73 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 64.3% (47 of 73 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Indonesian)

Currently translated at 76.7% (56 of 73 strings)

Translated using Weblate (Polish)

Currently translated at 60.2% (44 of 73 strings)

Translated using Weblate (Hindi)

Currently translated at 21.9% (16 of 73 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (73 of 73 strings)

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

Currently translated at 17.8% (13 of 73 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (652 of 652 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Aitor Salaberria <trslbrr@gmail.com>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Florian <flo.site@zaclys.net>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Igor Sorocean <sorocean.igor@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Issa1553 <fairfull.playing@gmail.com>
Co-authored-by: JS Ahn <freirepublik@gmail.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Jonatan Nyberg <jonatan@autistici.org>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Co-authored-by: Mateus <mateusbernardo@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Phahim Hasan <phahimhasanrakib@gmail.com>
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: S3aBreeze <S3aBreeze@users.noreply.hosted.weblate.org>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Sierzh <my-email@tut.by>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: ThePsychoBuck <Thepsychobuck@protonmail.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: bowornsin <bowornsin@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: komiratsu19273240ad76c354986 <2011945@naver.com>
Co-authored-by: petlyh <88139840+petlyh@users.noreply.github.com>
Co-authored-by: phneutral26 <github@phileric.anonaddy.com>
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: Štefan Baebler <stefan.baebler@gmail.com>
Co-authored-by: Макар Разин <makarrazin14@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/be/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bn/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ru/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2023-03-01 10:17:40 +01:00
Stypox
23a20712da Merge pull request #9707 from Jared234/1473_remove_duplicates_from_playlist
Remove duplicates from playlist feature
2023-02-28 22:14:01 +01:00
Stypox
43f46e29ad Update app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java 2023-02-28 21:40:11 +01:00
Stypox
7617f8cdc7 Update app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java 2023-02-28 21:35:57 +01:00
Stypox
2e3490bce2 Merge pull request #9747 from Jared234/9126_remove_partially_watched_from_feed
Added option to remove partially watched videos from the 'Whats new' feed
2023-02-28 19:10:11 +01:00
Jared Fantaye
1dd0930b83 Fixed some small issues 2023-02-28 17:30:17 +01:00
Jared Fantaye
265de55a07 Merge remote-tracking branch 'origin/1473_remove_duplicates_from_playlist' into 1473_remove_duplicates_from_playlist 2023-02-28 16:44:13 +01:00
Jared Fantaye
d8ed2c8503 Refactoring removeDuplicates function and preventing concurrent calls. 2023-02-28 16:43:58 +01:00
Stypox
73aebc1110 Merge pull request #9847 from Redirion/exo183
Update to ExoPlayer 2.18.3
2023-02-26 19:16:25 +01:00
Stypox
3cb76e4c34 Merge pull request #9746 from NyanCatTW1/issue9745
Add an option to Ignore hardware media button events
2023-02-26 16:35:12 +01:00
Stypox
65680b2ccf Only update main tabs position when it changes 2023-02-26 15:58:09 +01:00
Stypox
c8ffe65acf Simplify code to set tab layout position 2023-02-26 15:42:49 +01:00
Stypox
a4767fc48a Listen to ignore hardware buttons pref changes 2023-02-26 14:28:57 +01:00
Nyan Cat
42d861688e Implement Ignore hardware media button events option 2023-02-26 14:02:50 +01:00
Stypox
2ee4c6e289 Merge pull request #9728 from mahendranv/channel_card
Larger channel cards in search results
2023-02-26 13:43:09 +01:00
Stypox
097c2368f4 Merge pull request #8180 from Trust04zh/fix-4053-8176
Make UI behavior for playback information display more consistent
2023-02-26 13:22:13 +01:00
Stypox
80e0c6ab0e Merge pull request #9755 from Jared234/9458_faulty_playlist_thumbnail_update
Fixed a bug that caused erroneous updates of the playlist thumbnails
2023-02-26 13:13:12 +01:00
Jared Fantaye
9067c770a7 Made some small code improvements 2023-02-25 22:14:49 +01:00
Stypox
f1a071b668 Merge pull request #9858 from Stypox/fit-more-grid-columns
Reduce the size of thumbnails on big screens to fit more grid columns
2023-02-25 20:42:36 +01:00
Stypox
8e888ebdf7 Reduce the size of thumbnails on big screens to fit more grid columns
Reverts part of #9310, which introduced bigger grid thumbnail sizes on big screens, because some users reported not being happy about having too few grid columns. See https://github.com/TeamNewPipe/NewPipe/pull/9310#discussion_r1070670806 .
2023-02-25 15:03:58 +01:00
Stypox
612122997b Merge pull request #9769 from pratyaksh1610/branch-9765
Fix progress bar scaling on thumbnail in playlists card view
2023-02-25 14:50:07 +01:00
Stypox
4b050c0dd8 Merge pull request #9850 from Stypox/fix-api33-links-again3
[Android 11+] Correctly open URLs in browser and fix opening downloads and external players
2023-02-25 14:33:41 +01:00
Stypox
be4f3d9d62 Improve javadocs in ShareUtils 2023-02-25 13:14:31 +01:00
Stypox
24ff6a4313 Rename videoURL to streamUrl 2023-02-25 13:14:31 +01:00
Stypox
c2968a3ff2 Use non-deprecated resolveActivity method on API 33+
But such method is not available before API 33
2023-02-25 13:14:31 +01:00
Stypox
671dd4afd3 Merge pull request #9777 from pratyaksh1610/branch-9774
[Bug] Crash fix when click on empty comment
2023-02-25 09:44:31 +01:00
Stypox
600ebdae18 Correctly open urls in browser on Android 11+
- Fix misconfiguration in manifest ('http|https|market' is not valid)
- Split ShareUtils functions taking a boolean parameter into pairs of functions with better names and less runtime checks
- Move all Kore-related functions to KoreUtils
- Remove the toast_no_player string
2023-02-25 09:13:59 +01:00
Robin
5560cea470 Update to ExoPlayer 2.18.3 2023-02-23 12:46:05 +01:00
Stypox
39c500f33c Revert "Use WindowCompat." 2023-02-14 08:27:04 +01:00
pratyaksh1610
624ad6a47c Prevent NPEs when comment text is null 2023-02-14 08:18:13 +01:00
Jared Fantaye
68ea99d6e6 Made some small code improvements 2023-02-09 23:17:36 +01:00
Jared Fantaye
bc29f40d69 Implemented the suggested changes 2023-02-09 21:18:21 +01:00
Jared234
42fb13f17a Merge branch 'dev' into 1473_remove_duplicates_from_playlist 2023-02-09 20:47:10 +01:00
Jared Fantaye
d5b54c85ed Made some small adjustments to the database query 2023-02-09 20:41:22 +01:00
pratyaksh1610
f0307b1b48 fix progress bar scaling in card view 2023-02-09 21:38:02 +05:30
Mahendran
75292e099c Larger channel cards in search results
- Thumbnail larger (100dp) than the usual (92dp) throughout the app
- Description lint count is 8 (normally 3)
2023-02-09 06:15:22 +05:30
Stypox
e0cb2892b8 Merge branch 'master' into dev 2023-02-08 22:48:14 +01:00
Stypox
831f36e18e Merge pull request #9711 from TeamNewPipe/release-0.25.0
Release v0.25.0 (992)
2023-02-08 22:47:32 +01:00
Stypox
d2f8f31d1f Update NewPipeExtractor again, because of JitPack problems 2023-02-08 22:37:17 +01:00
Stypox
8d43499e5b Update NewPipeExtractor again 2023-02-08 22:27:49 +01:00
Hosted Weblate
63375627e9 Translated using Weblate (Bengali)
Currently translated at 21.9% (16 of 73 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 69.8% (51 of 73 strings)

Translated using Weblate (Portuguese)

Currently translated at 69.8% (51 of 73 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Dutch)

Currently translated at 65.7% (48 of 73 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 28.7% (21 of 73 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (654 of 654 strings)

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

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (653 of 654 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Basque)

Currently translated at 45.2% (33 of 73 strings)

Translated using Weblate (German)

Currently translated at 73.9% (54 of 73 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.8% (653 of 654 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (French)

Currently translated at 99.6% (652 of 654 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (German)

Currently translated at 100.0% (654 of 654 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 15.0% (11 of 73 strings)

Translated using Weblate (German)

Currently translated at 73.9% (54 of 73 strings)

Translated using Weblate (Thai)

Currently translated at 32.0% (209 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 15.0% (11 of 73 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 64.3% (47 of 73 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Indonesian)

Currently translated at 76.7% (56 of 73 strings)

Translated using Weblate (Polish)

Currently translated at 60.2% (44 of 73 strings)

Translated using Weblate (Hindi)

Currently translated at 21.9% (16 of 73 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (73 of 73 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (73 of 73 strings)

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

Currently translated at 17.8% (13 of 73 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (652 of 652 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Aitor Salaberria <trslbrr@gmail.com>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Florian <flo.site@zaclys.net>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Igor Sorocean <sorocean.igor@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Issa1553 <fairfull.playing@gmail.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Jonatan Nyberg <jonatan@autistici.org>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Co-authored-by: Mateus <mateusbernardo@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Phahim Hasan <phahimhasanrakib@gmail.com>
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: S3aBreeze <S3aBreeze@users.noreply.hosted.weblate.org>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bowornsin <bowornsin@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: petlyh <88139840+petlyh@users.noreply.github.com>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bn/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/de/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/id/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt_PT/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2023-02-08 22:23:39 +01:00
Stypox
4903786b14 Merge pull request #9758 from Stypox/fix-api33-links-again
Fix opening links on Android 12+
2023-02-08 22:20:22 +01:00
Stypox
4cc653fdf1 Fix opening links on Android 12+ 2023-02-07 22:39:12 +01:00
Stypox
4c5c2a3d79 Merge pull request #9693 from Redirion/accelerometerfix
Orientation is locked if there is no sensor for it
2023-02-07 20:07:45 +01:00
ge78fug
26b29ca78d Made the requested color changes 2023-02-07 18:46:40 +01:00
Stypox
c85af7861a Merge pull request #9742 from TeamNewPipe/revert-9553-exo182
Revert PR #9553 "Update ExoPlayer to 2.18.2"
2023-02-07 10:48:18 +01:00
Stypox
dc1ecc19ed Merge pull request #9743 from TeamNewPipe/update-desugar-2.0.2
Update core library desugaring from 2.0.0 to 2.0.2
2023-02-07 10:44:15 +01:00
Trust_04zh
e947e86eae Make positions in list depend on watch history, remove confusing animations
The following is the list of all commits squashed together:

Regain function for option `Positions in lists`

use option `Resume playback` to control display of progress info in VideoDetailFragment, remove this (extra) function from option `Positions in lists`.
remove extra check for live streams, live streams updates just as non-live streams.

fix #8176 by eliminating exit delay

Regain function for option `Positions in lists`

update code with developer's comments

 apply static import to methods in util class DependentPreferenceHelper

Regain function for option `Positions in lists`

use option `Resume playback` to control display of progress info in VideoDetailFragment, remove this (extra) function from option `Positions in lists`.
remove extra check for live streams, live streams updates just as non-live streams.

fix behavior for displaying progress bar when autoplay off but video resume on

not to retrieve unnecessary states when position in lists disabled

fix mistake in code

simplify conditional logic

update doc comment and remove unused method

Fix not showing duration if position indicators disabled

Positions in lists only depends on watch history
2023-02-07 09:48:18 +01:00
Jared Fantaye
5d3955854e Fixed the merge conflict 2023-02-05 21:21:02 +01:00
Jared234
3ff4b713e8 Merge branch 'dev' into 9458_faulty_playlist_thumbnail_update 2023-02-05 20:45:44 +01:00
Jared Fantaye
68097568d5 Fixed the bug by replacing the thumbnail_url with the thumbnail_stream_id 2023-02-05 20:32:34 +01:00
Jared Fantaye
cd8d57040c Implemented the feature using multiple checkboxes 2023-02-04 18:48:27 +01:00
TobiGr
812efca08e Update core libraray desugaring libs from 2.0.0 to 2.0.2 2023-02-03 18:42:12 +01:00
Stypox
1db1a00581 Add snippet to ensure baseline.profm file is sorted
Thanks to obfusk, see https://issuetracker.google.com/issues/231837768 and #6486
2023-02-03 18:40:48 +01:00
Tobi
e0ba872b66 Revert "Update ExoPlayer to 2.18.2"
This commit reverts 1bb166a
2023-02-03 18:33:35 +01:00
Jared Fantaye
9c82441c19 Implemented the feature and fixed some small issues 2023-02-01 23:10:31 +01:00
ge78fug
38db0cc713 Changed the color 2023-01-31 16:07:57 +01:00
Marius Wagner
ee217eb9b7 Merge branch 'TeamNewPipe:dev' into tabs_on_bottom 2023-01-31 13:37:47 +01:00
Jared Fantaye
3d36eb5baf Fixed a small commit mistake 2023-01-30 22:39:16 +01:00
Jared Fantaye
d2d324f2dd First draft of the new feature 2023-01-30 22:37:24 +01:00
Marius Wagner
2b37721a6e Update app/src/main/res/values/strings.xml
Co-authored-by: Stypox <stypox@pm.me>
2023-01-29 19:37:46 +01:00
Stypox
353db0bc6c Merge pull request #9726 from Stypox/fix-api30+-links
Fix opening URLs in browser on API 30+
2023-01-29 18:08:25 +01:00
Stypox
d1aed94d27 Fix opening urls in browser on API 30+
See https://medium.com/androiddevelopers/package-visibility-in-android-11-cc857f221cd9 and https://github.com/TeamNewPipe/NewPipe/issues/9615
2023-01-29 11:38:34 +01:00
Stypox
281cdf65da Merge pull request #9725 from AudricV/yt_support-live-links
[YouTube] Add support for live links
2023-01-29 11:03:23 +01:00
AudricV
5af5c90492 [YouTube] Add support for live links
The addition of this support requires an extractor update.
2023-01-29 10:59:27 +01:00
Stypox
ca421c28a1 Merge pull request #9538 from Jared234/4186_warning_duplicates_in_playlist
Handle duplicate streams in the "Add to playlist" dialog
2023-01-29 10:36:31 +01:00
Stypox
711345eff7 Improve playlist duplicate indicator layout 2023-01-29 10:32:44 +01:00
Stypox
102975aeb3 Improve handling playlist duplicate indicator 2023-01-29 10:32:32 +01:00
Stypox
cd12503f99 Merge pull request #9631 from TeamNewPipe/update-npe
Update NewPipeExtractor and properly linkify comments
2023-01-28 22:40:19 +01:00
Stypox
1e724eba6c Merge pull request #9706 from Jared234/9131_bug_background_player
Fixed a bug that caused the background player to stop working
2023-01-28 21:56:00 +01:00
Jared Fantaye
c70ce791db Added the duplicate indicator explanation & removed some unnecessary functions 2023-01-27 15:37:33 +01:00
ge78fug
0821f6463a Added bottom main-tabs feature 2023-01-25 19:25:57 +01:00
Tobi
444ac5fe95 Merge pull request #9709 from Stypox/reproducible-build
Fix reproducible builds
2023-01-24 22:05:22 +01:00
Stypox
b9228df32c Release v0.25.0 (992) 2023-01-22 08:59:21 +01:00
Stypox
b6bf0ffc40 Add changelog for v0.25.0 (992) 2023-01-22 08:56:29 +01:00
Hosted Weblate
34e6e70be9 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Lithuanian)

Currently translated at 99.3% (648 of 652 strings)

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

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Assamese)

Currently translated at 15.0% (98 of 652 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Slovenian)

Currently translated at 2.7% (2 of 72 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Lithuanian)

Currently translated at 99.3% (648 of 652 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (651 of 652 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (652 of 652 strings)

Translated using Weblate (German)

Currently translated at 100.0% (652 of 652 strings)

Co-authored-by: Abhilash <dev.abhilash.s@gmail.com>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ahmad0a <Ahmad3p@protonmail.com>
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: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: ErnestasKaralius <ernis.karalius@gmail.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Francesco Saltori <francescosaltori@gmail.com>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: HudobniVolk <hudobni.volk@tuta.io>
Co-authored-by: Igor Nedoboy <i.nedoboy@mail.ru>
Co-authored-by: Igor Rückert <igorruckert@yahoo.com.br>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Pieter van der Razemond <pietervanderrazemond@mailbox.org>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: RSoulwin <aapshergill1@gmail.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: Retrial <giwrgosmant@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: random r <epsilin@yopmail.com>
Co-authored-by: ssantos <ssantos@web.de>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sl/
Translation: NewPipe/Metadata
2023-01-22 05:12:39 +01:00
Jared Fantaye
5b3f8a3d30 Replaced the equals method 2023-01-21 14:56:55 +01:00
Sıla
fceec71ad3 Corrected language names 2023-01-21 12:13:15 +00:00
Stypox
a69f74f51b Add snippet to ensure baseline.profm file is sorted
Thanks to obfusk, see https://issuetracker.google.com/issues/231837768 and #6486
2023-01-20 18:39:16 +01:00
Jared Fantaye
e26c038565 Made some small adjustments 2023-01-20 11:55:50 +01:00
Jared Fantaye
52e39c3402 Fixed tests 2023-01-20 11:12:32 +01:00
Stypox
f2af168986 Merge pull request #9691 from Marius1501/change_the_chapter_icon
Changed the chapter icon
2023-01-20 08:16:45 +01:00
ge78fug
6e1ffb4e52 Centered the icon 2023-01-19 23:24:25 +01:00
ge78fug
f88c1e1e8b Changed the position 2023-01-19 21:15:09 +01:00
Jared Fantaye
ddda80a577 Fixed the bug 2023-01-17 22:31:22 +01:00
Tobi
d758e50634 Merge pull request #9696 from Stypox/fix-pref-npe
Fix NPEs after OnSharedPreferenceChangeListener changes
2023-01-17 13:01:09 +01:00
ge78fug
a6021730cd Removed format_list_numbered 2023-01-17 10:50:13 +01:00
TobiGr
e9fcad4787 Fix SonarLint 2023-01-16 23:20:50 +01:00
TobiGr
640d4b0280 Fix more NPEs after OnSharedPreferenceChangeListener changes 2023-01-16 23:05:29 +01:00
Stypox
b9378a7c1f Fix NPEs after OnSharedPreferenceChangeListener changes
Apps targeting {@link android.os.Build.VERSION_CODES#R} on devices running OS versions {@link android.os.Build.VERSION_CODES#R Android R} or later, will receive a {@code null} value when preferences are cleared.
2023-01-16 22:30:28 +01:00
ge78fug
abb6b4282d Chenged the chapter icon 2023-01-16 15:13:34 +01:00
Robin
9ecd5dff09 Orientation is locked if there is no sensor for it 2023-01-16 13:56:45 +01:00
Stypox
aa41fec466 Merge pull request #9686 from Isira-Seneviratne/Update_desugar
Update desugar_jdk_libs to 2.0.0.
2023-01-16 12:59:22 +01:00
Tobi
e4641cd427 Update translations (#9688)
* Translated using Weblate (Hebrew)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (German)

Currently translated at 100.0% (650 of 650 strings)

Added translation using Weblate (Assamese)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (650 of 650 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (German)

Currently translated at 72.2% (52 of 72 strings)

Translated using Weblate (Danish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Catalan)

Currently translated at 95.5% (620 of 649 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 10.6% (69 of 649 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Arabic)

Currently translated at 51.3% (37 of 72 strings)

Translated using Weblate (Bengali)

Currently translated at 89.9% (584 of 649 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Thai)

Currently translated at 32.2% (209 of 649 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Japanese)

Currently translated at 99.6% (647 of 649 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (German)

Currently translated at 66.6% (48 of 72 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (French)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (German)

Currently translated at 100.0% (649 of 649 strings)

Translated using Weblate (Hindi)

Currently translated at 19.4% (14 of 72 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (648 of 648 strings)

Co-authored-by: Abhilash <dev.abhilash.s@gmail.com>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ahmad0a <Ahmad3p@protonmail.com>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: ERYpTION <eryption.x6tf8@simplelogin.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Nikodem Zawirski <nikon96@gmail.com>
Co-authored-by: Oymate <dhruboadittya96@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: RSoulwin <aapshergill1@gmail.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: SalusVF <salus.vf@gmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
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: bowornsin <bowornsin@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nautilusx <translate@disroot.org>
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: tryvseu <tryvseu@tuta.io>
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/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translation: NewPipe/Metadata

* Translated using Weblate (Slovenian)

Currently translated at 63.6% (414 of 650 strings)

* Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (650 of 650 strings)

* Translated using Weblate (Assamese)

Currently translated at 3.6% (24 of 650 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Abhilash <dev.abhilash.s@gmail.com>
Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Ahmad0a <Ahmad3p@protonmail.com>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: ERYpTION <eryption.x6tf8@simplelogin.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Eric <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: GnuPGを使うべきだ <dieeeazpnnqbpddh@cock.email>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Nikodem Zawirski <nikon96@gmail.com>
Co-authored-by: Oymate <dhruboadittya96@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.com>
Co-authored-by: RSoulwin <aapshergill1@gmail.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: SalusVF <salus.vf@gmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
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: bowornsin <bowornsin@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nautilusx <translate@disroot.org>
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: tryvseu <tryvseu@tuta.io>
Co-authored-by: HudobniVolk <hudobni.volk@tuta.io>
2023-01-15 21:53:52 +01:00
GET100PERCENT
dba24ec1f9 Added Odia language to language selector (#9651) 2023-01-15 21:24:01 +01:00
Stypox
abe6dfb99c Merge pull request #9671 from Stypox/fix-toast-crash-api33
Fix popup enablement toast crash on API 33
2023-01-15 21:05:05 +01:00
Stypox
d08d7cf31f Merge pull request #9310 from mahendranv/fr_larger_thumbs
FR: Full width thumbnails aka card view mode
2023-01-15 20:25:45 +01:00
Stypox
6e73c489de Improve ellipsizing comments 2023-01-15 19:28:01 +01:00
Stypox
489df0ed7d Update NewPipeExtractor and properly linkify comments 2023-01-15 19:27:56 +01:00
Mahendran
7924bb5b6b Thumbnails used in NewPipe are small (list/grid) mode. This PR facilitates full width thumbnails and dubbed as card mode. 2023-01-15 22:32:03 +05:30
Stypox
c47d1af5e3 Merge pull request #9555 from Marius1501/make_the_channel_images_bigger
Made the channel-images in the grid list bigger
2023-01-15 15:16:09 +01:00
Stypox
51af961e0d Merge pull request #8894 from Isira-Seneviratne/WindowCompat
Use WindowCompat.
2023-01-15 15:14:05 +01:00
Stypox
86997794ab Merge pull request #9678 from Marius1501/change_whats_new_icon
Changed the What's New icon
2023-01-15 15:12:26 +01:00
Stypox
2db29187f4 Merge pull request #7725 from AudricV/add-long-press-actions-on-hashtags-and-links-in-descriptions
Add long press action on hashtags and web links in descriptions
2023-01-15 14:06:32 +01:00
Stypox
22c201be39 Create text subpackage in util 2023-01-15 11:51:07 +01:00
AudricV
cdd5e89b86 Add ability to copy hashtags, URLs and timestamps in descriptions on long-press
This commit adds the ability to copy to clipboard hashtags, URLs and timestamps
when long-pressing them.

Some changes in our TextView class related to text setting have been required
and metadata items are now using a NewPipeTextView instead of a standard
TextView.

Six new classes have been added:

- a custom LinkMovementMethod class;
- a custom ClickableSpan class, LongPressClickableSpan, in order to set a long
  press event;
- a class to avoid code duplication in CommentTextOnTouchListener, TouchUtils;
- three implementations of LongPressClickableSpan used when linkifying text:
  - HashtagLongPressClickableSpan for hashtags;
  - TimestampLongPressClickableSpan for timestamps;
  - UrlLongPressClickableSpan for URLs.
2023-01-15 11:40:27 +01:00
ge78fug
764b6aa2b1 Made the channel-images in the grid list bigger
Also improved the handling of additional information (expanded description, video count, subscriber count)
2023-01-15 10:50:20 +01:00
Isira Seneviratne
f766ef2033 Replace the system UI visibility flags with WindowCompat calls. 2023-01-15 05:44:45 +05:30
Stypox
ef4a6238c8 See if playlists already contain a stream from db 2023-01-14 18:01:48 +01:00
Jared Fantaye
b3554a6a49 Added the number of duplicates to the toast text. 2023-01-14 18:01:48 +01:00
Jared Fantaye
5fb7b3266b Removed the duplicate dialog and added another toast option 2023-01-14 18:01:48 +01:00
Jared Fantaye
8b6e110635 Fixed the functionality, improved performance & general code cleanup 2023-01-14 18:01:47 +01:00
Jared Fantaye
f5a1f915be Continued working on a way to show that items are already in a playlist 2023-01-14 18:01:47 +01:00
Jared Fantaye
ac15339911 Started working on a way to show that items are already in a playlist 2023-01-14 18:01:47 +01:00
Jared Fantaye
fdfeac081a Implemented a warning before adding duplicate to playlist. 2023-01-14 18:01:46 +01:00
ge78fug
31396a632f Chenged the name of the icon 2023-01-14 09:21:37 +01:00
Isira Seneviratne
223150aa42 Update desugar_jdk_libs to 2.0.0. 2023-01-14 11:00:00 +05:30
Jared Fantaye
135fc08212 Implemented the "remove duplicates" feature. 2023-01-13 21:35:22 +01:00
ge78fug
5e3caf68a5 Chenged the What's New icon 2023-01-13 16:33:45 +01:00
Stypox
262b3a2945 Merge pull request #9664 from Marius1501/whats_new_section_to_default_tabs
Added the "What's New"-section to the default tabs
2023-01-13 13:25:02 +01:00
Stypox
e44d09208c Merge pull request #9642 from Jared234/8582_empty_playlists_not_shown
Fixed a bug that prevented the display of multiple empty playlists
2023-01-13 13:20:42 +01:00
Stypox
0546c9b9fc Merge pull request #9445 from Jared234/9122_remove_watched_bug
Fixed a bug that incorrectly removed videos from a playlist when using the "Remove Viewed" dialog
2023-01-12 23:45:48 +01:00
Jared Fantaye
38c4a1ed85 Fixed the "Remove Watched" bug
Reverted changes and fixed bug in a different way
2023-01-12 23:44:26 +01:00
Stypox
fd8e92cf77 Merge pull request #9523 from Jared234/9468_permanently_set_thumbnail
Allow the user to permanently set a thumbnail
2023-01-12 23:27:50 +01:00
Stypox
062570cc47 Merge pull request #8886 from Isira-Seneviratne/Remove_Runnable_variables
Remove Runnable variables for Handlers.
2023-01-12 15:34:12 +01:00
Isira Seneviratne
9514316be3 Remove Runnable variables for Handlers. 2023-01-12 15:30:19 +01:00
Stypox
a15a5adacc Merge pull request #9619 from Redirion/avoidreflectionifpossible
Check availability of Samsung DeX only on Samsung devices
2023-01-12 12:06:19 +01:00
Stypox
b6e6d39985 Fix toast crash on API 33
You shouldn't call getView() on toasts.
Also simplified some duplicate code.
2023-01-12 11:39:25 +01:00
Stypox
48ae830262 Merge pull request #9653 from petlyh/fix-popup-crash
Ask for permission when enqueuing in a popup
2023-01-12 11:24:21 +01:00
Stypox
03f5dd71a5 Merge pull request #9499 from pratyaksh1610/branch-9466
Added Language suffix for subtitle downloads
2023-01-11 19:46:51 +01:00
Stypox
2afbe58722 UX improvements: keep user edits & do not reset cursor 2023-01-11 19:45:55 +01:00
ge78fug
0a64eac778 Added the "What's New"-section to the default tabs 2023-01-11 16:06:11 +01:00
Stypox
ad605e2c5a Actually there is no need to use flatMap
`null` values returned in the lambda are converted to empty `Optional`s in the `map` method: https://developer.android.com/reference/java/util/Optional#map(java.util.function.Function%3C?%20super%20T,%20?%20extends%20U%3E)
2023-01-11 15:26:46 +01:00
Stypox
eed44b3231 Merge pull request #9135 from devlearner/routeractivity-screen-rotate
Improve screen rotation handling in Open action menu
2023-01-11 15:20:47 +01:00
Stypox
944e295ae7 Use Optional for simpler code 2023-01-11 15:14:18 +01:00
devlearner
28109fef38 Improve showing of toast
We provide visual feedback via a toast to the user that, well, they're supposed to wait; but with the benefit of the cache openAddToPlaylistDialog() may return (almost) immediately, which would render the toast otiose (if not a bit confusing). This commit improves that by cancelling the toast once the wait's over

... (by 'abusing' RxJava's ambWith();
ref on compose() and Transformer: https://blog.danlew.net/2015/03/02/dont-break-the-chain/
and for me, first time laying my hands at RxJava so kindly bear with me; open for suggestions)
2023-01-11 14:53:48 +01:00
devlearner
40442f3f82 Utilize Lifecycle observer
I thought it would have required an extra dependency; apparently that doesn't seem to be the case...
2023-01-11 14:53:48 +01:00
devlearner
61da167b4f Oops, added back missing return; 2023-01-11 14:53:48 +01:00
devlearner
c744f6756b Fix Sonar reported code smell 2023-01-11 14:53:48 +01:00
devlearner
de7057ac3a Skip REORDER_TO_FRONT trick which doesn't seem to work on newer Androids
probably due to background restrictions on Android 10+
2023-01-11 14:53:48 +01:00
devlearner
585bfff11d Utilize a retained fragment to safekeep network requests in flight
pending result for openAddToPlaylistDialog() and openDownloadDialog()
Despite marked deprecated, setRetainInstance(true) is probably our best bet (since a ViewModel is probably too overkill for our present purpose)
2023-01-11 14:53:48 +01:00
devlearner
0f9c20c986 Improve (un)registering FragmentLifecycleCallbacks
to avoid adding it multiple times and ensure proper cleanup
2023-01-11 14:53:48 +01:00
devlearner
f860392ae9 Address LayoutParams.FLAG_NOT_TOUCHABLE restriction on Andriod 12+ 2023-01-11 14:53:48 +01:00
devlearner
391830558e Ensure our transparent activity doesn't block touch events to underlying windows
so we won't hold up UI while fetching media info for Add to Playlist or Download actions
lest user might think it freezes when in fact a network request is underway
2023-01-11 14:53:48 +01:00
devlearner
c1f37d8591 Also show toast in openDownloadDialog()
and lengthened a bit to inform user to wait...
2023-01-11 14:53:48 +01:00
devlearner
b175774ad8 Try to amicably handle DialogFragment in FragmentManager when recreated from orientation change
- Handle finish() call instead of passing around callbacks to setOnDismissListener()
- Don't start over again if returning to DialogFragment before orientation change
2023-01-11 14:53:48 +01:00
devlearner
73e32889b6 Don't finish() to allow recreate
when orientation change is on foot
2023-01-11 14:53:48 +01:00
devlearner
400ee808e0 Set up theme/locale before super.create()
This seems to solve a bug where the Open action menu dialog does not appear the first time on cold start on older Android (8.0).
This is also the order of things in MainActivity and probably good practice.
2023-01-11 14:53:48 +01:00
Stypox
87976693f8 Merge pull request #9285 from Isira-Seneviratne/Optional_cleanup
Clean up Optional-related code.
2023-01-11 14:52:25 +01:00
Stypox
9c7ed80662 Use Optional.map correctly and other improvements 2023-01-11 14:47:53 +01:00
Jared Fantaye
eb3363d4dd Created the first draft. 2023-01-10 20:55:18 +01:00
petlyh
edff696ecc Ask for permission when enqueuing in a popup 2023-01-10 14:16:19 +01:00
Jared Fantaye
9c19e9813a Fixed a bug that caused multiple empty playlists to be not shown. 2023-01-08 11:53:42 +01:00
Jared Fantaye
2679a4bf1e Removed the "Unset Thumbnail" item if you can't use this feature 2023-01-04 16:21:16 +01:00
Isira Seneviratne
e8216b2e80 Apply code review suggestions. 2023-01-04 06:10:14 +05:30
Isira Seneviratne
e3062d7c66 Use Optional chaining. 2023-01-04 05:16:21 +05:30
Isira Seneviratne
fd55d85bbf Remove SimplifyOptionalCallChains. 2023-01-04 05:16:21 +05:30
Robin
f10d591462 Samsung DeX should only be checked on Samsung devices
Co-authored-by: opusforlife2 <53176348+opusforlife2@users.noreply.github.com>
2023-01-03 15:12:02 +01:00
pratyaksh1610
3e15c77a05 move string to donottranslate.xml and fix nits 2023-01-03 14:07:28 +05:30
Stypox
1bb166a9e8 Merge pull request #9553 from Redirion/exo182
Update ExoPlayer to 2.18.2
2023-01-02 18:21:53 +01:00
Stypox
8fa949537b Merge pull request #8769 from Isira-Seneviratne/New_Utils_methods
Use new NPE UTF8 Utils methods
2023-01-02 17:59:26 +01:00
Stypox
7454b31788 Merge pull request #9562 from bravenewpipe/use-videostream-for-audio-only-background-playback
Support audio only background for services only supporting video streams
2023-01-02 17:51:10 +01:00
Stypox
b6488fe342 Merge pull request #8841 from Isira-Seneviratne/Notification_mode_ListAdapter
Use ListAdapter in NotificationModeConfigAdapter.
2023-01-02 14:47:25 +01:00
Stypox
b1d9080a0f Simplify disposables handling in notification mode settings 2023-01-02 14:45:11 +01:00
pratyaksh1610
50269d0f5e updated caption file name and clean code 2023-01-02 16:23:45 +05:30
Robin
f17155bb3f Merge branch 'TeamNewPipe:dev' into exo182 2023-01-02 10:35:20 +01:00
Isira Seneviratne
7988fe0c5a Use new NewPipe Extractor Utils methods. 2023-01-02 07:03:18 +05:30
evermind
f4a5b3bcbf set 'playback in background button' visible if there are videostreams 2023-01-01 21:55:03 +01:00
Stypox
cd0e585586 Merge pull request #9568 from pratyaksh1610/branch-add-play-all-icon
Added icon for "Play All"
2023-01-01 18:03:42 +01:00
Stypox
464247784d Merge pull request #9520 from Isira-Seneviratne/Update_RxJava
Update RxJava to 3.1.5.
2023-01-01 12:52:06 +01:00
Stypox
56800c24b9 Update rxandroid from 3.0.0 to 3.0.2 2023-01-01 12:46:56 +01:00
Stypox
6af2242d5d Merge pull request #9521 from pratyaksh1610/branch-9518
Fixes #9518: Crash fix when click "Add to playlist" while the current list is still loading
2022-12-31 23:31:58 +01:00
Stypox
d21fac658b Remove playlist details toasts 2022-12-31 23:30:17 +01:00
Stypox
27f6c3b634 Merge pull request #9502 from Jared234/8585_download_in_queue
Added option to download items in the queue
2022-12-31 19:34:07 +01:00
Stypox
b3bfec9505 Use correct fragment manager for download dialog
Tapping download on the long-press menu of queue items when the queue is shown inside the player would crash otherwise
2022-12-31 19:31:24 +01:00
Stypox
367ece8ffa Merge pull request #9496 from Jared234/9437_continue_playing_while_seeking
Seeking no longer pauses the played video
2022-12-31 19:19:21 +01:00
Stypox
661cd4c182 Merge pull request #9159 from Isira-Seneviratne/Refactor_VideoPlayerUi
Refactor VideoPlayerUi.
2022-12-31 19:01:19 +01:00
Stypox
be856f71c8 Merge pull request #8847 from Isira-Seneviratne/Refactor_VideoDetailFragment
Refactor VideoDetailFragment.
2022-12-31 18:41:06 +01:00
Stypox
97978033dd Activate on click listeners only when not loading
For consistency with long click listeners, in VideoDetailFragment
2022-12-31 17:49:10 +01:00
Stypox
413a1b504a Refactor constrolsTouchListener code 2022-12-31 17:47:57 +01:00
Stypox
8078620977 Merge pull request #9481 from TacoTheDank/bumpDesugaring
Update Desugaring to 1.1.8
2022-12-31 17:15:00 +01:00
Stypox
69e8e4d63e Merge pull request #9306 from Stypox/target-api-33
Set compileSdk and targetSdk to 33 (Android 13)
2022-12-31 14:49:30 +01:00
Isira Seneviratne
fb1360b72a Use ListAdapter in NotificationModeConfigAdapter. 2022-12-29 06:14:46 +05:30
Stypox
231e677b16 Merge pull request #8895 from Isira-Seneviratne/SparseArrayCompat
Use SparseArrayCompat.
2022-12-28 20:37:05 +01:00
Tobi
fcac53cdc0 Merge pull request #9488 from Jared234/9353_night_theme_selection
Disabling night theme selection if auto theme is not used
2022-12-25 22:19:02 +01:00
Tobi
b07f1a77aa Merge pull request #9596 from TeamNewPipe/update-localization
Update translations
2022-12-25 21:40:47 +01:00
TobiGr
c13b858f02 Add Nynorsk (nn) to the language chooser 2022-12-25 21:22:35 +01:00
Hosted Weblate
5d9bf8055e Translated using Weblate (French)
Currently translated at 93.0% (67 of 72 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (French)

Currently translated at 91.6% (66 of 72 strings)

Translated using Weblate (Urdu)

Currently translated at 66.9% (434 of 648 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Telugu)

Currently translated at 6.9% (5 of 72 strings)

Translated using Weblate (Telugu)

Currently translated at 66.9% (434 of 648 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Tamil)

Currently translated at 54.0% (350 of 648 strings)

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

Currently translated at 100.0% (648 of 648 strings)

Co-authored-by: Ahmad Raza <ahmadrazaxm@gmail.com>
Co-authored-by: Dan <denqwerta@gmail.com>
Co-authored-by: Florian <flo.site@zaclys.net>
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: K.B.Dharun Krishna <kbdharunkrishna@gmail.com>
Co-authored-by: Kiss Attila <gaxeco4855@pro5g.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Terry Louwers <t.louwers@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: subba raidu <raidu4u@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fr/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/te/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translation: NewPipe/Metadata
2022-12-25 21:22:19 +01:00
evermind
dfc46c3b6c Support audio only background for services only supporting video streams
Some services may only have video streams and no separate audio streams available.
This commit will add audio background playback support for those services.
It uses the video source as audio source for background playback.
2022-12-17 21:17:42 +01:00
pratyaksh1610
d255d3e376 added icon for play all 2022-12-17 17:41:57 +05:30
Robin
eea4f0f41c Update ExoPlayer to 2.18.2 2022-12-16 17:53:56 +01:00
Jared Fantaye
12796920a3 Removed the wasPlaying variable 2022-12-10 21:56:04 +01:00
Jared Fantaye
dfd6534a1c Added "6.json" 2022-12-10 17:32:02 +01:00
Jared Fantaye
fedc26e3cb Added migration to new database 2022-12-09 22:40:54 +01:00
Jared Fantaye
1ac62541a8 Formatting, renaming and small fixes 2022-12-09 12:01:59 +01:00
Tobi
5942add141 Merge pull request #9522 from TeamNewPipe/update-translations
Update translations
2022-12-09 11:35:18 +01:00
TobiGr
9eb72d5a86 Delete translation without default: progressive_load_interval_default 2022-12-09 10:42:45 +01:00
TobiGr
26579cc170 Delete translation without default: app_update_notification_content_title 2022-12-09 10:40:48 +01:00
TobiGr
d70b768031 Delete translation without default: app_update_notification_content_text 2022-12-09 10:39:49 +01:00
TobiGr
0c47fc7017 Delete translation without default: app_update_notification_content_text 2022-12-09 10:39:22 +01:00
pratyaksh1610
c537776826 Fixes #9518
- Crash fix on clicking on add to playlist.
- Added toast when clicked on share button for better UI.
2022-12-09 14:09:40 +05:30
Isira Seneviratne
7c5b4510af Update RxJava to 3.1.5. 2022-12-09 07:56:14 +05:30
Jared Fantaye
bf1ebf8733 Fixed some bugs and improved code quality 2022-12-08 23:31:20 +01:00
Hosted Weblate
8edfafcf09 Translated using Weblate (Spanish)
Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Esperanto)

Currently translated at 74.3% (482 of 648 strings)

Translated using Weblate (German)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (French)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (German)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (German)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Estonian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (German)

Currently translated at 99.8% (647 of 648 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (648 of 648 strings)

Translated using Weblate (Greek)

Currently translated at 99.6% (646 of 648 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: BMN <weblate@yopmail.com>
Co-authored-by: C. Rüdinger <Mail-an-CR@web.de>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Eric <hamburger1024@duck.com>
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Florian <flo.site@zaclys.net>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.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: Linerly <linerly@protonmail.com>
Co-authored-by: Nidi <nizamismidov4@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Priit Jõerüüt <hwlate@joeruut.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: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Skarvinius <saab_samuel@hotmail.com>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: argonfilm <gradicchuck@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: nautilusx <translate@disroot.org>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/es/
Translation: NewPipe/Metadata
2022-12-08 22:43:11 +01:00
Jared Fantaye
10a5741f36 Tried to implement the feature 2022-12-07 02:32:53 +01:00
Isira Seneviratne
c7d392e77e Merge branch 'dev' into Refactor_VideoDetailFragment 2022-12-06 20:21:28 +05:30
Isira Seneviratne
161007fe92 Merge branch 'dev' into Refactor_VideoPlayerUi 2022-12-06 20:21:08 +05:30
Jared Fantaye
5fc85fa2e0 Implemented suggestions 2022-12-05 21:21:46 +01:00
Tobi
4a27d371e0 Merge pull request #9504 from dngray/pr-remove_privacytools
[PeerTube] Remove dead Privacy Tools instance
2022-12-05 13:32:38 +01:00
Daniel Gray
a4c9e0a35e Remove dead Privacy Tools instance (#9504) 2022-12-05 14:32:21 +10:30
Stypox
a6f57a8665 Merge pull request #9173 from Theta-Dev/video-sub-count
Show subscriber count on video details page
2022-12-04 20:50:13 +01:00
Stypox
0df696739f Make subscribers in video detail fragment dimmer 2022-12-04 20:45:10 +01:00
ThetaDev
86ee94eb04 show subscriber count on player page 2022-12-04 20:45:09 +01:00
Jared Fantaye
0923594e51 Added option to download items in the queue 2022-12-04 20:35:06 +01:00
Stypox
3bb51875bc Merge pull request #9501 from Stypox/import-subscriptions-hint
Add hint to improve discoverability of subscription import
2022-12-04 20:19:19 +01:00
Stypox
40225443ed Center text in empty views 2022-12-04 19:25:38 +01:00
Stypox
10977eaefa Show hint about how to import subscriptions when there are none 2022-12-04 19:16:47 +01:00
Stypox
3103fd7302 Rename list_empty_subtitle string 2022-12-04 18:59:14 +01:00
Stypox
281ac13eed Merge pull request #8883 from Douile/dev-enqueue-next-hide
Only show "Enqueue next" when in the middle of the queue
2022-12-04 18:43:45 +01:00
Douile
e5f30a07bf Only show "Enqueue next" when in the middle of the queue
Add a check that the queue position is not the last in the queue before
showing "Enqueue next".

Previously the "Enqueue next" action would always be shown if the queue
length was greater than one, this meant even if you were at the end of
the queue (when "Enqueue" would have the same effect as "Enqueue next")
the action would still be shown.
2022-12-04 18:20:50 +01:00
Stypox
9c4d5526f4 Merge pull request #8810 from Isira-Seneviratne/Math_floorDiv
Use Math.floorDiv().
2022-12-04 18:08:12 +01:00
Stypox
77737a5687 Merge pull request #9500 from pratyaksh1610/branch_9348
Rename `help` to `fast mode`
2022-12-04 17:45:23 +01:00
pratyaksh1610
869d46f15c rename help to fast mode 2022-12-04 19:11:38 +05:30
pratyaksh1610
1afb9cdba9 added Language suffix for subtitle downloads 2022-12-04 17:59:22 +05:30
Stypox
730664eefb Merge pull request #8668 from Isira-Seneviratne/Show_no_update_notification
Show toast when no updates are available.
2022-12-04 12:03:21 +01:00
Isira Seneviratne
6b210e1542 Apply ktlint formatting. 2022-12-04 12:01:57 +01:00
Isira Seneviratne
f1b15a95a4 Show toast when no updates are available.
Co-authored-by: Stypox <stypox@pm.me>
2022-12-04 12:01:56 +01:00
Hosted Weblate
1d53389ca9 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Hindi)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Korean)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (French)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 9.1% (59 of 646 strings)

Translated using Weblate (Punjabi (Pakistan))

Currently translated at 19.6% (127 of 646 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 99.0% (640 of 646 strings)

Translated using Weblate (Arabic (Libya))

Currently translated at 5.5% (4 of 72 strings)

Translated using Weblate (Hindi)

Currently translated at 18.0% (13 of 72 strings)

Translated using Weblate (Hungarian)

Currently translated at 11.1% (8 of 72 strings)

Translated using Weblate (Portuguese)

Currently translated at 69.4% (50 of 72 strings)

Translated using Weblate (Filipino)

Currently translated at 5.5% (4 of 72 strings)

Translated using Weblate (Filipino)

Currently translated at 35.9% (232 of 646 strings)

Translated using Weblate (Catalan)

Currently translated at 95.9% (620 of 646 strings)

Translated using Weblate (Hindi)

Currently translated at 78.7% (509 of 646 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (646 of 646 strings)

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

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 69.4% (50 of 72 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Persian)

Currently translated at 61.1% (44 of 72 strings)

Translated using Weblate (Russian)

Currently translated at 41.6% (30 of 72 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Norwegian Nynorsk)

Currently translated at 6.1% (40 of 646 strings)

Translated using Weblate (Odia)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Odia)

Currently translated at 2.7% (2 of 72 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (French)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Odia)

Currently translated at 30.1% (195 of 646 strings)

Translated using Weblate (Russian)

Currently translated at 41.6% (30 of 72 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 92.2% (596 of 646 strings)

Translated using Weblate (Hindi)

Currently translated at 69.6% (450 of 646 strings)

Added translation using Weblate (Norwegian Nynorsk)

Translated using Weblate (Georgian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Icelandic)

Currently translated at 99.0% (640 of 646 strings)

Translated using Weblate (Punjabi)

Currently translated at 6.9% (5 of 72 strings)

Translated using Weblate (German)

Currently translated at 62.5% (45 of 72 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Georgian)

Currently translated at 20.1% (130 of 646 strings)

Translated using Weblate (Georgian)

Currently translated at 98.6% (71 of 72 strings)

Added translation using Weblate (Georgian)

Co-authored-by: AudricV <avdivers84@gmail.com>
Co-authored-by: Boros Zsombor <zsombor2626@gmail.com>
Co-authored-by: Cyndaquissshhh <iversonbriones123@gmail.com>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: JY3 <GeeyunJY3@gmail.com>
Co-authored-by: L-M-H <lars.magnus@herland.priv.no>
Co-authored-by: M. Ll <mklr95@gmail.com>
Co-authored-by: M4SK <themightyloki@free.fr>
Co-authored-by: Nahla Hamdi <nahlahamdi87@gmail.com>
Co-authored-by: Net <nizamismidov4@gmail.com>
Co-authored-by: Nikoloz <nukushatugushi@gmail.com>
Co-authored-by: Pedro Henrique Vilela do Nascimento <pedro.hvn@usp.br>
Co-authored-by: Platon Terekhov <gibbonsville_cowal@simplelogin.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: Trendyne <eiko@chiru.no>
Co-authored-by: VfBFan <drop0815@posteo.de>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: bgo-eiu <huyaqoob+toolforge@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: qqqq1 <qqqq1@hi2.in>
Co-authored-by: ssantos <ssantos@web.de>
Co-authored-by: tryvseu <tryvseu@tuta.io>
Co-authored-by: Артём Нефедов <artem10397g@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar_LY/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/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/fil/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hi/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ka/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/or/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
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/ru/
Translation: NewPipe/Metadata
2022-12-04 00:15:40 +01:00
Jared Fantaye
8fc5fa979d Added menu with tappable list items 2022-12-03 09:52:04 +01:00
TacoTheDank
074a8ff46a Update Desugaring to 1.1.8 2022-12-02 13:52:30 -05:00
Jared Fantaye
a2f2d562f6 Disabling night theme selection if auto theme is not used 2022-12-01 13:01:58 +01:00
Stypox
bd6b3c53c5 Merge pull request #9480 from TacoTheDank/bumpSonar
Update Sonarqube to 3.5
2022-11-30 00:14:33 +01:00
TacoTheDank
8282b8a6c0 Update Sonarqube to 3.5 2022-11-29 11:20:31 -05:00
Stypox
72a250b610 Merge pull request #9479 from Stypox/create-scaled-bitmap
Use smoother bitmap downscaling for thumbnails
2022-11-29 16:09:31 +01:00
Isira Seneviratne
b0516fbf1d Use BitmapCompat.createScaledBitmap(). 2022-11-29 15:56:19 +01:00
Stypox
05903502c5 Merge pull request #8743 from shivambeohar/8615-gap-at-miniplayer-close-button-fix
Remove padding from the end of the mini-player
2022-11-29 12:31:55 +01:00
Stypox
2bf58abb89 Make miniplayer close button area larger 2022-11-29 12:07:30 +01:00
Stypox
9d01d88eed Request permission to send notifications 2022-11-28 18:49:11 +01:00
Stypox
f07886fc5e Add notifications permission 2022-11-28 18:23:47 +01:00
Tobi
2984649106 Merge pull request #9471 from yashpalgoyal1304/set-width-image-minimizer
Set image-minimizer to specify image width ...
2022-11-28 14:32:09 +01:00
Stypox
60671c99ed Merge pull request #9474 from bravenewpipe/avoid-wrong-nullable-notnull-annotation-imports
Forbid wrong `@Nullable` and `@NotNull` annotation imports
2022-11-28 14:30:52 +01:00
Stypox
bce77aaec7 Block rxjava3 nullable/nonnull imports in checkstyle 2022-11-28 14:28:08 +01:00
evermind
f2e3020f9d checkstyle: declare org.jetbrains and javax.annotation Nullable's and NotNull/Nonnull as illegal imports 2022-11-28 13:33:50 +01:00
yashpalgoyal1304
e9ef9451e5 Minimize not-so-long images too 2022-11-27 03:22:37 +05:30
yashpalgoyal1304
7c1d06e023 Resolve scoping issue to get values of probeResult 2022-11-27 02:06:01 +05:30
AudricV
6b89b44dcd Merge pull request #8961 from dhruvpatidar359/Toast-Popup
Remove the redundant/overlapping toast "Copied to clipboard" for Android 13+
2022-11-26 21:33:12 +01:00
yashpalgoyal1304
225f69b75b Fix value of width 2022-11-27 01:56:53 +05:30
yashpalgoyal1304
44bc6bf069 Set image-minimizer to specify image width ...
Fix https://github.com/TeamNewPipe/NewPipe/issues/9469
for portrait like orientations
2022-11-26 23:29:11 +05:30
Jared Fantaye
e5af1c93ae Seeking no longer pauses the played video 2022-11-26 15:35:13 +01:00
Isira Seneviratne
d6617007d4 Use SparseArrayCompat instead of SparseArray in StreamItemAdapter.
Make additional small improvements as well.
2022-11-22 18:31:58 +05:30
Isira Seneviratne
8db90ba449 Use SparseArrayCompat for thumbnails. 2022-11-22 17:51:54 +05:30
seojun0924
16b0df69b1 Update README.ko.md
Updated Korean README with latest version of README
2022-11-19 01:03:18 +09:00
Stypox
048b0972de Set compileSdk and targetSdk to 33 (Android 13)
android:exported in now required in the manifest on all activities/services/receivers/providers. It was set to true for those that need to interact with outside apps or the OS, while others have exported=false.
This also required updating LeakCanary to the latest version as the older version being used was not using android:exported in AndroidManifest.xml.
2022-11-18 08:33:13 +01:00
Isira Seneviratne
a7989795e8 Merge branch 'dev' into Refactor_VideoPlayerUi 2022-11-14 08:59:03 +05:30
Isira Seneviratne
a40f035810 Merge branch 'dev' into Refactor_VideoDetailFragment 2022-11-14 08:58:45 +05:30
Isira Seneviratne
aad5e26f31 Merge pull request #8870 from Isira-Seneviratne/Locale_forLanguageTag
Use Locale.forLanguageTag().
2022-11-10 19:56:34 +05:30
Tobi
627c6e29a2 Merge pull request #8316 from han-sz/fix_video_mouse_hover_overlay
Fix persistent hover overlay when in desktop/DeX mode or using a mouse/non-touch input
2022-11-09 17:10:01 +01:00
TobiGr
95c32d6f4a Merge remote-tracking branch 'Weblate/dev' into dev 2022-11-09 16:48:12 +01:00
Coool (github.com/Coool)
747df59741 Translated using Weblate (Latvian)
Currently translated at 92.5% (598 of 646 strings)
2022-11-09 16:46:12 +01:00
Coool (github.com/Coool)
a4e883c119 Translated using Weblate (Latvian)
Currently translated at 4.1% (3 of 72 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/lv/
2022-11-09 16:46:12 +01:00
pjammo
289f9105d9 Translated using Weblate (Italian)
Currently translated at 100.0% (72 of 72 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
2022-11-09 16:46:12 +01:00
Fjuro
5804483c89 Translated using Weblate (Czech)
Currently translated at 100.0% (72 of 72 strings)

Translation: NewPipe/Metadata
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/cs/
2022-11-09 16:46:09 +01:00
ShareASmile
16732905bf Translated using Weblate (Punjabi)
Currently translated at 100.0% (646 of 646 strings)
2022-11-09 16:46:07 +01:00
TobiGr
ef1e7e5b52 Merge branch 'master' into dev 2022-11-09 16:45:22 +01:00
AudricV
abf1cc536d Improve code of DeviceUtils.isDesktopMode
- Avoid NullPointerException crashes if there is no UiModeManager or desktop
system service mode
- Use final for every exception
- Suppress missing fields warnings
- Add missing NonNull annotation
2022-11-09 16:22:49 +01:00
cybersphinx
c38f150562 Remove now obsolete API check. 2022-11-09 15:50:09 +01:00
cybersphinx
d2b6bda7a2 Remove errant return. 2022-11-09 15:50:09 +01:00
cybersphinx
9e5c68c575 Add check for input devices with cursor. 2022-11-09 15:50:06 +01:00
Hanif Shersy
88eed6cc23 Add JSDoc comment and a performance note for isDesktopMode 2022-11-09 15:48:50 +01:00
Hanif Shersy
a1773d166f Fix JSDoc checkstyle warning 2022-11-09 15:44:36 +01:00
Hanif Shersy
5e2ef7ff0d Address review comments 2022-11-09 15:44:36 +01:00
Hanif Shersy
cfda073aa5 Fix DeX mode check 2022-11-09 15:44:36 +01:00
Hanif Shersy
ff774a1870 Fix persistent hover overlay when mouse connected 2022-11-09 15:44:27 +01:00
Isira Seneviratne
feb03f7e30 Use Math.floorDiv(). 2022-11-09 20:01:40 +05:30
Isira Seneviratne
95a65d5704 Merge pull request #9333 from Isira-Seneviratne/PendingIntent_mutability
Make PendingIntents immutable on Android 6.0 and later.
2022-11-09 08:58:16 +05:30
Isira Seneviratne
5c1af6d296 Group private Localization methods together. 2022-11-09 08:54:47 +05:30
Isira Seneviratne
6d812b86aa Use Locale.forLanguageTag(). 2022-11-09 08:51:12 +05:30
AudricV
7b7ab3f419 Remove Utility.copyToClipboard and use ShareUtils.copyToClipboard instead
This method is not needed anymore, as ShareUtils.copyToClipboard does
almost the same thing (no label is set on the ClipData used to copy text,
contrary to what Utility did, but using "text" as a ClipData label doesn't seem
useful).

It was used in MissionAdapter.handlePopupItem to copy the SHA1 or the MD5 of a
file.
2022-11-08 20:47:51 +01:00
dhruvpatidar359
ef35b36eba Remove the redundant/overlapping toast "Copied to clipboard" for Android 13+
Signed-off-by: dhruv <dhruvpatidar35@gmail.com>

Co-authored-by: Tobi <TobiGr@users.noreply.github.com>
Co-authored-by: AudricV <74829229+AudricV@users.noreply.github.com>
2022-11-08 20:47:50 +01:00
Hosted Weblate
bb83d2b489 Translated using Weblate (Odia)
Currently translated at 6.1% (40 of 646 strings)

Translated using Weblate (Santali)

Currently translated at 10.3% (67 of 646 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 63.8% (46 of 72 strings)

Translated using Weblate (Arabic)

Currently translated at 50.0% (36 of 72 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Portuguese)

Currently translated at 69.4% (50 of 72 strings)

Translated using Weblate (Bulgarian)

Currently translated at 4.1% (3 of 72 strings)

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

Currently translated at 16.6% (12 of 72 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 92.2% (596 of 646 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.6% (644 of 646 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (646 of 646 strings)

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

Currently translated at 99.8% (645 of 646 strings)

Translated using Weblate (Korean)

Currently translated at 99.8% (645 of 646 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Punjabi (Pakistan))

Currently translated at 18.4% (119 of 646 strings)

Translated using Weblate (Slovak)

Currently translated at 9.7% (7 of 72 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 97.2% (70 of 72 strings)

Translated using Weblate (Polish)

Currently translated at 59.7% (43 of 72 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (72 of 72 strings)

Translated using Weblate (Turkish)

Currently translated at 99.8% (645 of 646 strings)

Translated using Weblate (German)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Hungarian)

Currently translated at 9.8% (7 of 71 strings)

Translated using Weblate (Punjabi)

Currently translated at 5.6% (4 of 71 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Punjabi)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Vietnamese)

Currently translated at 99.6% (644 of 646 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Hungarian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Asturian)

Currently translated at 2.8% (2 of 71 strings)

Translated using Weblate (Punjabi)

Currently translated at 99.6% (644 of 646 strings)

Translated using Weblate (Vietnamese)

Currently translated at 98.9% (639 of 646 strings)

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

Currently translated at 99.5% (643 of 646 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (646 of 646 strings)

Added translation using Weblate (English (Middle))

Added translation using Weblate (English (Old))

Added translation using Weblate (Sicilian)

Added translation using Weblate (Arabic (Najdi))

Added translation using Weblate (Kashmiri)

Added translation using Weblate (German (Low))

Added translation using Weblate (Aymará)

Added translation using Weblate (Kazakh)

Translated using Weblate (Bulgarian)

Currently translated at 2.8% (2 of 71 strings)

Translated using Weblate (Bengali)

Currently translated at 90.5% (585 of 646 strings)

Translated using Weblate (Punjabi)

Currently translated at 99.6% (644 of 646 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Lithuanian)

Currently translated at 100.0% (646 of 646 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (646 of 646 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Balázs Meskó <meskobalazs@mailbox.org>
Co-authored-by: Enol P <enolp@softastur.org>
Co-authored-by: Ergün Can Taş <erguntas1968@gmail.com>
Co-authored-by: GET100PERCENT <eraofphysics@yahoo.com>
Co-authored-by: Gediminas Murauskas <muziejusinfo@gmail.com>
Co-authored-by: Giovanni Donisi <giovannidonisi0701@gmail.com>
Co-authored-by: Hoseok Seo <ddinghoya@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: L-M-H <lars.magnus@herland.priv.no>
Co-authored-by: Lyudmil Borisov <lyuskoborisov@abv.bg>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Massimo Pissarello <mapi68@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Co-authored-by: Prasanta-Hembram <Prasantahembram720@gmail.com>
Co-authored-by: Preston Waters <masatox3@yahoo.com>
Co-authored-by: Ray <ray.cfu@protonmail.com>
Co-authored-by: Rohan Deb Sarkar <rohandebsarkar+git@gmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: Sebi <stoican_sebi@yahoo.com>
Co-authored-by: ShareASmile <aapshergill@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: Thọ Bùi Nguyễn Hoàng <buitho061997@gmail.com>
Co-authored-by: Vri 🌈 <weblate@vrifox.cc>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: bgo-eiu <huyaqoob+toolforge@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: pjammo <adrianoghr@hotmail.it>
Co-authored-by: thami simo <simo.azad@gmail.com>
Co-authored-by: zaioti <zaioti@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ar/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/ast/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/az/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/bg/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/hu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/it/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pa/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/pt/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/sk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/uk/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/zh_Hant_HK/
Translation: NewPipe/Metadata
2022-11-08 09:24:09 +01:00
Isira Seneviratne
3dc1adb69e Add helper methods for adding PendingIntent mutability. 2022-11-07 17:12:22 +05:30
Isira Seneviratne
e4f97465a4 Use lambdas for VideoDetailFragment listeners. 2022-11-03 20:15:17 +05:30
Isira Seneviratne
e333197ed5 Use OnClickListener and OnLongClickListener lambdas in the player UIs. 2022-11-03 05:09:35 +05:30
1095 changed files with 31559 additions and 8767 deletions

View File

@@ -1,3 +1,5 @@
### Please do **not** open pull requests for *new features* now, as we are planning to rewrite large chunks of the code. Only bugfix PRs will be accepted. More details will be announced soon!
NewPipe contribution guidelines
===============================

View File

@@ -1,11 +1,11 @@
name: Question
description: Ask about anything NewPipe-related
labels: [question, needs triage]
labels: [question]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this issue! :hugs:
Thanks for taking the time to fill out this form! :hugs:
Note that you can also ask questions on our [IRC channel](https://web.libera.chat/#newpipe).
@@ -14,7 +14,7 @@ body:
attributes:
label: "Checklist"
options:
- label: "I made sure that there are *no existing issues* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
- label: "I made sure that there are *no existing issues or discussions* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
required: true
- label: "I have read the [FAQ](https://newpipe.net/FAQ/) and my question isn't listed."
required: true

View File

@@ -14,7 +14,7 @@ body:
attributes:
label: "Checklist"
options:
- label: "I am able to reproduce the bug with the [latest version](https://github.com/TeamNewPipe/NewPipe/releases/latest)."
- label: "I am able to reproduce the bug with the latest version given here: [CLICK THIS LINK](https://github.com/TeamNewPipe/NewPipe/releases/latest)."
required: true
- label: "I made sure that there are *no existing issues* - [open](https://github.com/TeamNewPipe/NewPipe/issues) or [closed](https://github.com/TeamNewPipe/NewPipe/issues?q=is%3Aissue+is%3Aclosed) - which I could contribute my information to."
required: true

View File

@@ -1,5 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: ❓ Question
url: https://github.com/TeamNewPipe/NewPipe/discussions/new?category=questions
about: Ask about anything NewPipe-related
- name: 💬 IRC
url: https://web.libera.chat/#newpipe
about: Chat with us via IRC for quick Q/A

View File

@@ -28,7 +28,7 @@
#### APK testing
<!-- Use a new, meaningfully named branch. The name is used as a suffix for the app ID to allow installing and testing multiple versions of NewPipe, e.g. "commentfix", if your PR implements a bugfix for comments. (No names like "patch-0" and "feature-1".) -->
<!-- Remove the following line if you directly link the APK created by the CI pipeline. Directly linking is preferred if you need to let users test.-->
The APK can be found by going to the "Checks" tab below the title. On the left pane, click on "CI", scroll down to "artifacts" and click "app" to download the zip file which contains the debug APK of this PR.
The APK can be found by going to the "Checks" tab below the title. On the left pane, click on "CI", scroll down to "artifacts" and click "app" to download the zip file which contains the debug APK of this PR. You can find more info and a video demonstration [on this wiki page](https://github.com/TeamNewPipe/NewPipe/wiki/Download-APK-for-PR).
#### Due diligence
- [ ] I read the [contribution guidelines](https://github.com/TeamNewPipe/NewPipe/blob/HEAD/.github/CONTRIBUTING.md).

17
.github/changed-lines-count-labeler.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
# Add 'size/small' label to any changes with less than 50 lines
size/small:
max: 49
# Add 'size/medium' label to any changes between 50 and 249 lines
size/medium:
min: 50
max: 249
# Add 'size/large' label to any changes between 250 and 749 lines
size/large:
min: 250
max: 749
# Add 'size/giant' label to any changes for more than 749 lines
size/giant:
min: 750

View File

@@ -42,12 +42,14 @@ jobs:
- name: create and checkout branch
# push events already checked out the branch
if: github.event_name == 'pull_request'
run: git checkout -B ${{ github.head_ref }}
env:
BRANCH: ${{ github.head_ref }}
run: git checkout -B "$BRANCH"
- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 11
java-version: 17
distribution: "temurin"
cache: 'gradle'
@@ -66,8 +68,13 @@ jobs:
timeout-minutes: 20
strategy:
matrix:
# api-level 19 is min sdk, but throws errors related to desugaring
api-level: [ 21, 29 ]
include:
- api-level: 21
target: default
arch: x86
- api-level: 33
target: google_apis # emulator API 33 only exists with Google APIs
arch: x86_64
permissions:
contents: read
@@ -75,10 +82,10 @@ jobs:
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 11
java-version: 17
distribution: "temurin"
cache: 'gradle'
@@ -86,8 +93,8 @@ jobs:
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
target: ${{ matrix.target }}
arch: ${{ matrix.arch }}
script: ./gradlew connectedCheck --stacktrace
- name: Upload test report when tests fail # because the printed out stacktrace (console) is too short, see also #7553
@@ -108,10 +115,10 @@ jobs:
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 11
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 11 # Sonar requires JDK 11
java-version: 17
distribution: "temurin"
cache: 'gradle'
@@ -126,4 +133,4 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew build sonarqube --info
run: ./gradlew build sonar --info

View File

@@ -17,6 +17,8 @@ module.exports = async ({github, context}) => {
initialBody = context.payload.comment.body;
} else if (context.eventName == 'issues') {
initialBody = context.payload.issue.body;
} else if (context.eventName == 'pull_request') {
initialBody = context.payload.pull_request.body;
} else {
console.log('Aborting: No body found');
return;
@@ -30,10 +32,12 @@ module.exports = async ({github, context}) => {
}
// Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com/<number>/<variousHexStringsAnd->.<fileExtension>)
const REGEX_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/[-\w\d]+\/[-\w\d]+\/assets\/\d+\/[\-0-9a-f]{32,512})\)/gm;
// Check if we found something
let foundSimpleImages = REGEX_IMAGE_LOOKUP.test(initialBody);
let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody)
|| REGEX_ASSETS_IMAGE_LOCKUP.test(initialBody);
if (!foundSimpleImages) {
console.log('Found no simple images to process');
return;
@@ -47,51 +51,8 @@ module.exports = async ({github, context}) => {
var wasMatchModified = false;
// Try to find and replace the images with minimized ones
let newBody = await replaceAsync(initialBody, REGEX_IMAGE_LOOKUP, async (match, g1, g2) => {
console.log(`Found match '${match}'`);
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
return match;
}
let shouldModify = false;
try {
console.log(`Probing ${g2}`);
let probeResult = await probe(g2);
if (probeResult == null) {
throw 'No probeResult';
}
if (probeResult.hUnits != 'px') {
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
}
if (probeResult.height <= 0) {
throw `Unexpected probeResult.height (height is invalid: ${probeResult.height})`;
}
if (probeResult.wUnits != 'px') {
throw `Unexpected probeResult.wUnits (expected px but got ${probeResult.wUnits})`;
}
if (probeResult.width <= 0) {
throw `Unexpected probeResult.width (width is invalid: ${probeResult.width})`;
}
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && (probeResult.width / probeResult.height) < MIN_ASPECT_RATIO;
} catch(e) {
console.log('Probing failed:', e);
// Immediately abort
return match;
}
if (shouldModify) {
wasMatchModified = true;
console.log(`Modifying match '${match}'`);
return `<img alt="${g1}" src="${g2}" height=${IMG_MAX_HEIGHT_PX} />`;
}
console.log(`Match '${match}' is ok/will not be modified`);
return match;
});
let newBody = await replaceAsync(initialBody, REGEX_USER_CONTENT_IMAGE_LOOKUP, minimizeAsync);
newBody = await replaceAsync(newBody, REGEX_ASSETS_IMAGE_LOCKUP, minimizeAsync);
if (!wasMatchModified) {
console.log('Nothing was modified. Skipping update');
@@ -115,9 +76,17 @@ module.exports = async ({github, context}) => {
repo: context.repo.repo,
body: newBody
});
} else if (context.eventName == 'pull_request') {
console.log('Updating pull request', context.payload.pull_request.number);
await github.rest.pulls.update({
pull_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
});
}
// Asnyc replace function from https://stackoverflow.com/a/48032528
// Async replace function from https://stackoverflow.com/a/48032528
async function replaceAsync(str, regex, asyncFn) {
const promises = [];
str.replace(regex, (match, ...args) => {
@@ -127,4 +96,52 @@ module.exports = async ({github, context}) => {
const data = await Promise.all(promises);
return str.replace(regex, () => data.shift());
}
async function minimizeAsync(match, g1, g2) {
console.log(`Found match '${match}'`);
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
return match;
}
let probeAspectRatio = 0;
let shouldModify = false;
try {
console.log(`Probing ${g2}`);
let probeResult = await probe(g2);
if (probeResult == null) {
throw 'No probeResult';
}
if (probeResult.hUnits != 'px') {
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
}
if (probeResult.height <= 0) {
throw `Unexpected probeResult.height (height is invalid: ${probeResult.height})`;
}
if (probeResult.wUnits != 'px') {
throw `Unexpected probeResult.wUnits (expected px but got ${probeResult.wUnits})`;
}
if (probeResult.width <= 0) {
throw `Unexpected probeResult.width (width is invalid: ${probeResult.width})`;
}
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);
probeAspectRatio = probeResult.width / probeResult.height;
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO;
} catch(e) {
console.log('Probing failed:', e);
// Immediately abort
return match;
}
if (shouldModify) {
wasMatchModified = true;
console.log(`Modifying match '${match}'`);
return `<img alt="${g1}" src="${g2}" width=${Math.min(600, Math.floor(IMG_MAX_HEIGHT_PX * probeAspectRatio))} />`;
}
console.log(`Match '${match}' is ok/will not be modified`);
return match;
}
}

View File

@@ -5,6 +5,8 @@ on:
types: [created, edited]
issues:
types: [opened, edited]
pull_request:
types: [opened, edited]
permissions:
issues: write

18
.github/workflows/pr-labeler.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: "PR size labeler"
on: [pull_request]
permissions:
contents: read
pull-requests: write
jobs:
changed-lines-count-labeler:
runs-on: ubuntu-latest
name: Automatically labelling pull requests based on the changed lines count
permissions:
pull-requests: write
steps:
- name: Set a label
uses: TeamNewPipe/changed-lines-count-labeler@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/changed-lines-count-labeler.yml

File diff suppressed because one or more lines are too long

View File

@@ -1,23 +1,27 @@
import com.android.tools.profgen.ArtProfileKt
import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile
plugins {
id "com.android.application"
id "kotlin-android"
id "kotlin-kapt"
id "kotlin-parcelize"
id "checkstyle"
id "org.sonarqube" version "3.3"
id "org.sonarqube" version "4.0.0.2929"
}
android {
compileSdk 32
compileSdk 33
namespace 'org.schabi.newpipe'
defaultConfig {
applicationId "org.schabi.newpipe"
resValue "string", "app_name", "NewPipe"
minSdk 21
targetSdk 29
versionCode 991
versionName "0.24.1"
targetSdk 33
versionCode 996
versionName "0.26.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -46,9 +50,6 @@ android {
}
}
// Keep the release build type at the end of the list to override 'archivesBaseName' of
// debug build. This seems to be a Gradle bug, therefore
// TODO: update Gradle version
release {
if (System.properties.containsKey('packageSuffix')) {
applicationIdSuffix System.getProperty('packageSuffix')
@@ -76,13 +77,13 @@ android {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
encoding 'utf-8'
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11
jvmTarget = JavaVersion.VERSION_17
}
sourceSets {
@@ -92,25 +93,32 @@ android {
buildFeatures {
viewBinding true
}
packagingOptions {
resources {
// remove two files which belong to jsoup
// no idea how they ended up in the META-INF dir...
excludes += ['META-INF/README.md', 'META-INF/CHANGES']
}
}
}
ext {
checkstyleVersion = '10.3.1'
checkstyleVersion = '10.12.1'
androidxLifecycleVersion = '2.5.1'
androidxRoomVersion = '2.4.3'
androidxRoomVersion = '2.5.2'
androidxWorkVersion = '2.7.1'
icepickVersion = '3.2.0'
exoPlayerVersion = '2.18.1'
googleAutoServiceVersion = '1.0.1'
exoPlayerVersion = '2.18.7'
googleAutoServiceVersion = '1.1.1'
groupieVersion = '2.10.1'
markwonVersion = '4.6.2'
leakCanaryVersion = '2.5'
leakCanaryVersion = '2.12'
stethoVersion = '1.6.0'
mockitoVersion = '4.0.0'
assertJVersion = '3.23.1'
}
configurations {
@@ -152,6 +160,7 @@ task runKtlint(type: JavaExec) {
getMainClass().set("com.pinterest.ktlint.Main")
classpath = configurations.ktlint
args "src/**/*.kt"
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
}
task formatKtlint(type: JavaExec) {
@@ -160,6 +169,7 @@ task formatKtlint(type: JavaExec) {
getMainClass().set("com.pinterest.ktlint.Main")
classpath = configurations.ktlint
args "-F", "src/**/*.kt"
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
}
afterEvaluate {
@@ -169,7 +179,7 @@ afterEvaluate {
preDebugBuild.dependsOn runCheckstyle, runKtlint
}
sonarqube {
sonar {
properties {
property "sonar.projectKey", "TeamNewPipe_NewPipe"
property "sonar.organization", "teamnewpipe"
@@ -179,7 +189,7 @@ sonarqube {
dependencies {
/** Desugaring **/
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
/** NewPipe libraries **/
// You can use a local version by uncommenting a few lines in settings.gradle
@@ -187,7 +197,7 @@ dependencies {
// name and the commit hash with the commit hash of the (pushed) commit you want to test
// This works thanks to JitPack: https://jitpack.io/
implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:eb07d70a2ce03bee3cc74fc33b2e4173e1c21436'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:v0.23.1'
implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0'
/** Checkstyle **/
@@ -195,13 +205,13 @@ dependencies {
ktlint 'com.pinterest:ktlint:0.45.2'
/** Kotlin **/
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}"
implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}"
/** AndroidX **/
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.core:core-ktx:1.8.0'
implementation 'androidx.core:core-ktx:1.10.0'
implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'androidx.fragment:fragment-ktx:1.4.1'
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}"
@@ -219,7 +229,7 @@ dependencies {
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}"
implementation "androidx.work:work-rxjava3:${androidxWorkVersion}"
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
/** Third-party libraries **/
// Instance state boilerplate elimination
@@ -227,10 +237,13 @@ dependencies {
kapt "frankiesardo:icepick-processor:${icepickVersion}"
// HTML parser
implementation "org.jsoup:jsoup:1.15.3"
implementation "org.jsoup:jsoup:1.16.1"
// HTTP client
implementation "com.squareup.okhttp3:okhttp:4.10.0"
implementation "com.squareup.okhttp3:okhttp:4.11.0"
// okhttp3:4.11.0 introduces a vulnerability from com.squareup.okio:okio@3.3.0,
// remove com.squareup.okio:okio when updating okhttp
implementation "com.squareup.okio:okio:3.4.0"
// Media player
implementation "com.google.android.exoplayer:exoplayer-core:${exoPlayerVersion}"
@@ -259,14 +272,14 @@ dependencies {
implementation "io.noties.markwon:linkify:${markwonVersion}"
// Crash reporting
implementation "ch.acra:acra-core:5.9.3"
implementation "ch.acra:acra-core:5.10.1"
// Properly restarting
implementation 'com.jakewharton:process-phoenix:2.1.2'
// Reactive extensions for Java VM
implementation "io.reactivex.rxjava3:rxjava:3.0.13"
implementation "io.reactivex.rxjava3:rxandroid:3.0.0"
implementation "io.reactivex.rxjava3:rxjava:3.1.6"
implementation "io.reactivex.rxjava3:rxandroid:3.0.2"
// RxJava binding APIs for Android UI widgets
implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0"
@@ -275,9 +288,9 @@ dependencies {
/** Debugging **/
// Memory leak detection
implementation "com.squareup.leakcanary:leakcanary-object-watcher-android:${leakCanaryVersion}"
implementation "com.squareup.leakcanary:plumber-android:${leakCanaryVersion}"
debugImplementation "com.squareup.leakcanary:leakcanary-android:${leakCanaryVersion}"
debugImplementation "com.squareup.leakcanary:leakcanary-object-watcher-android:${leakCanaryVersion}"
debugImplementation "com.squareup.leakcanary:plumber-android:${leakCanaryVersion}"
debugImplementation "com.squareup.leakcanary:leakcanary-android-core:${leakCanaryVersion}"
// Debug bridge for Android
debugImplementation "com.facebook.stetho:stetho:${stethoVersion}"
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}"
@@ -287,10 +300,10 @@ dependencies {
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
testImplementation "org.mockito:mockito-inline:${mockitoVersion}"
androidTestImplementation "androidx.test.ext:junit:1.1.3"
androidTestImplementation "androidx.test:runner:1.4.0"
androidTestImplementation "androidx.test.ext:junit:1.1.5"
androidTestImplementation "androidx.test:runner:1.5.2"
androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}"
androidTestImplementation "org.assertj:assertj-core:${assertJVersion}"
androidTestImplementation "org.assertj:assertj-core:3.23.1"
}
static String getGitWorkingBranch() {
@@ -308,3 +321,25 @@ static String getGitWorkingBranch() {
return ""
}
}
// fix reproducible builds
project.afterEvaluate {
tasks.compileReleaseArtProfile.doLast {
outputs.files.each { file ->
if (file.toString().endsWith(".profm")) {
println("Sorting ${file} ...")
def version = ArtProfileSerializer.valueOf("METADATA_0_0_2")
def profile = ArtProfileKt.ArtProfile(file)
def keys = new ArrayList(profile.profileData.keySet())
def sortedData = new LinkedHashMap()
Collections.sort keys, new DexFile.Companion()
keys.each { key -> sortedData[key] = profile.profileData[key] }
new FileOutputStream(file).with {
write(version.magicBytes$profgen)
write(version.versionBytes$profgen)
version.write$profgen(it, sortedData, "")
}
}
}
}
}

View File

@@ -1,32 +1,18 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/the-scrabi/bin/Android/Sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# https://developer.android.com/build/shrink-code
## Helps debug release versions
-dontobfuscate
## Rules for NewPipeExtractor
-keep class org.schabi.newpipe.extractor.timeago.patterns.** { *; }
-keep class org.mozilla.javascript.** { *; }
-keep class org.mozilla.classfile.ClassFileWriter
-keep class com.google.android.exoplayer2.** { *; }
-dontwarn org.mozilla.javascript.tools.**
# Rules for icepick. Copy paste from https://github.com/frankiesardo/icepick
## Rules for ExoPlayer
-keep class com.google.android.exoplayer2.** { *; }
## Rules for Icepick. Copy pasted from https://github.com/frankiesardo/icepick
-dontwarn icepick.**
-keep class icepick.** { *; }
-keep class **$$Icepick { *; }
@@ -35,11 +21,11 @@
}
-keepnames class * { @icepick.State *;}
## Rules for OkHttp. Copy paste from https://github.com/square/okhttp
## Rules for OkHttp. Copy pasted from https://github.com/square/okhttp
-dontwarn okhttp3.**
-dontwarn okio.**
##
## See https://github.com/TeamNewPipe/NewPipe/pull/1441
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
!static !transient <fields>;
@@ -47,5 +33,5 @@
private void readObject(java.io.ObjectInputStream);
}
# for some reason NotificationModeConfigFragment wasn't kept (only referenced in a preference xml)
## For some reason NotificationModeConfigFragment wasn't kept (only referenced in a preference xml)
-keep class org.schabi.newpipe.settings.notifications.** { *; }

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,6 @@ 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
@@ -33,7 +32,7 @@ class DatabaseMigrationTest {
@get:Rule
val testHelper = MigrationTestHelper(
InstrumentationRegistry.getInstrumentation(),
AppDatabase::class.java.canonicalName, FrameworkSQLiteOpenHelperFactory()
AppDatabase::class.java
)
@Test
@@ -42,7 +41,8 @@ class DatabaseMigrationTest {
databaseInV2.run {
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
"streams",
SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
put("service_id", DEFAULT_SERVICE_ID)
put("url", DEFAULT_URL)
@@ -54,14 +54,16 @@ class DatabaseMigrationTest {
}
)
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
"streams",
SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
put("service_id", DEFAULT_SECOND_SERVICE_ID)
put("url", DEFAULT_SECOND_URL)
}
)
insert(
"streams", SQLiteDatabase.CONFLICT_FAIL,
"streams",
SQLiteDatabase.CONFLICT_FAIL,
ContentValues().apply {
put("service_id", DEFAULT_SERVICE_ID)
}
@@ -70,18 +72,38 @@ class DatabaseMigrationTest {
}
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME, Migrations.DB_VER_3,
true, Migrations.MIGRATION_2_3
AppDatabase.DATABASE_NAME,
Migrations.DB_VER_3,
true,
Migrations.MIGRATION_2_3
)
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME, Migrations.DB_VER_4,
true, Migrations.MIGRATION_3_4
AppDatabase.DATABASE_NAME,
Migrations.DB_VER_4,
true,
Migrations.MIGRATION_3_4
)
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME, Migrations.DB_VER_5,
true, Migrations.MIGRATION_4_5
AppDatabase.DATABASE_NAME,
Migrations.DB_VER_5,
true,
Migrations.MIGRATION_4_5
)
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME,
Migrations.DB_VER_6,
true,
Migrations.MIGRATION_5_6
)
testHelper.runMigrationsAndValidate(
AppDatabase.DATABASE_NAME,
Migrations.DB_VER_7,
true,
Migrations.MIGRATION_6_7
)
val migratedDatabaseV3 = getMigratedDatabase()
@@ -121,7 +143,8 @@ class DatabaseMigrationTest {
private fun getMigratedDatabase(): AppDatabase {
val database: AppDatabase = Room.databaseBuilder(
ApplicationProvider.getApplicationContext(),
AppDatabase::class.java, AppDatabase.DATABASE_NAME
AppDatabase::class.java,
AppDatabase.DATABASE_NAME
)
.build()
testHelper.closeWhenFinished(database)

View File

@@ -0,0 +1,124 @@
package org.schabi.newpipe.database
import android.content.Context
import androidx.room.Room
import androidx.test.core.app.ApplicationProvider
import io.reactivex.rxjava3.core.Single
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
import org.junit.Before
import org.junit.Test
import org.schabi.newpipe.database.feed.dao.FeedDAO
import org.schabi.newpipe.database.feed.model.FeedEntity
import org.schabi.newpipe.database.feed.model.FeedGroupEntity
import org.schabi.newpipe.database.stream.StreamWithState
import org.schabi.newpipe.database.stream.dao.StreamDAO
import org.schabi.newpipe.database.stream.model.StreamEntity
import org.schabi.newpipe.database.subscription.SubscriptionDAO
import org.schabi.newpipe.database.subscription.SubscriptionEntity
import org.schabi.newpipe.extractor.ServiceList
import org.schabi.newpipe.extractor.channel.ChannelInfo
import org.schabi.newpipe.extractor.stream.StreamType
import java.io.IOException
import java.time.OffsetDateTime
import kotlin.streams.toList
class FeedDAOTest {
private lateinit var db: AppDatabase
private lateinit var feedDAO: FeedDAO
private lateinit var streamDAO: StreamDAO
private lateinit var subscriptionDAO: SubscriptionDAO
private val serviceId = ServiceList.YouTube.serviceId
private val stream1 = StreamEntity(1, serviceId, "https://youtube.com/watch?v=1", "stream 1", StreamType.VIDEO_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-01", OffsetDateTime.parse("2023-01-01T00:00:00Z"))
private val stream2 = StreamEntity(2, serviceId, "https://youtube.com/watch?v=2", "stream 2", StreamType.VIDEO_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-02", OffsetDateTime.parse("2023-01-02T00:00:00Z"))
private val stream3 = StreamEntity(3, serviceId, "https://youtube.com/watch?v=3", "stream 3", StreamType.LIVE_STREAM, 1000, "channel-1", "https://youtube.com/channel/1", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-01-03", OffsetDateTime.parse("2023-01-03T00:00:00Z"))
private val stream4 = StreamEntity(4, serviceId, "https://youtube.com/watch?v=4", "stream 4", StreamType.VIDEO_STREAM, 1000, "channel-2", "https://youtube.com/channel/2", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-10", OffsetDateTime.parse("2023-08-10T00:00:00Z"))
private val stream5 = StreamEntity(5, serviceId, "https://youtube.com/watch?v=5", "stream 5", StreamType.VIDEO_STREAM, 1000, "channel-2", "https://youtube.com/channel/2", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-20", OffsetDateTime.parse("2023-08-20T00:00:00Z"))
private val stream6 = StreamEntity(6, serviceId, "https://youtube.com/watch?v=6", "stream 6", StreamType.VIDEO_STREAM, 1000, "channel-3", "https://youtube.com/channel/3", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-09-01", OffsetDateTime.parse("2023-09-01T00:00:00Z"))
private val stream7 = StreamEntity(7, serviceId, "https://youtube.com/watch?v=7", "stream 7", StreamType.VIDEO_STREAM, 1000, "channel-4", "https://youtube.com/channel/4", "https://i.ytimg.com/vi/1/hqdefault.jpg", 100, "2023-08-10", OffsetDateTime.parse("2023-08-10T00:00:00Z"))
private val allStreams = listOf(
stream1, stream2, stream3, stream4, stream5, stream6, stream7
)
@Before
fun createDb() {
val context = ApplicationProvider.getApplicationContext<Context>()
db = Room.inMemoryDatabaseBuilder(
context, AppDatabase::class.java
).build()
feedDAO = db.feedDAO()
streamDAO = db.streamDAO()
subscriptionDAO = db.subscriptionDAO()
}
@After
@Throws(IOException::class)
fun closeDb() {
db.close()
}
@Test
fun testUnlinkStreamsOlderThan_KeepOne() {
setupUnlinkDelete("2023-08-15T00:00:00Z")
val streams = feedDAO.getStreams(
FeedGroupEntity.GROUP_ALL_ID, includePlayed = true, includePartiallyPlayed = true, null
)
.blockingGet()
val allowedStreams = listOf(stream3, stream5, stream6, stream7)
assertEqual(streams, allowedStreams)
}
@Test
fun testUnlinkStreamsOlderThan_KeepMultiple() {
setupUnlinkDelete("2023-08-01T00:00:00Z")
val streams = feedDAO.getStreams(
FeedGroupEntity.GROUP_ALL_ID, includePlayed = true, includePartiallyPlayed = true, null
)
.blockingGet()
val allowedStreams = listOf(stream3, stream4, stream5, stream6, stream7)
assertEqual(streams, allowedStreams)
}
private fun assertEqual(streams: List<StreamWithState>?, allowedStreams: List<StreamEntity>) {
assertNotNull(streams)
assertEquals(allowedStreams, streams!!.stream().map { it.stream }.toList().sortedBy { it.uid })
}
private fun setupUnlinkDelete(time: String) {
clearAndFillTables()
Single.fromCallable {
feedDAO.unlinkStreamsOlderThan(OffsetDateTime.parse(time))
}.blockingSubscribe()
Single.fromCallable {
streamDAO.deleteOrphans()
}.blockingSubscribe()
}
private fun clearAndFillTables() {
db.clearAllTables()
streamDAO.insertAll(allStreams)
subscriptionDAO.insertAll(
listOf(
SubscriptionEntity.from(ChannelInfo(serviceId, "1", "https://youtube.com/channel/1", "https://youtube.com/channel/1", "channel-1")),
SubscriptionEntity.from(ChannelInfo(serviceId, "2", "https://youtube.com/channel/2", "https://youtube.com/channel/2", "channel-2")),
SubscriptionEntity.from(ChannelInfo(serviceId, "3", "https://youtube.com/channel/3", "https://youtube.com/channel/3", "channel-3")),
SubscriptionEntity.from(ChannelInfo(serviceId, "4", "https://youtube.com/channel/4", "https://youtube.com/channel/4", "channel-4")),
)
)
feedDAO.insertAll(
listOf(
FeedEntity(1, 1),
FeedEntity(2, 1),
FeedEntity(3, 1),
FeedEntity(4, 2),
FeedEntity(5, 2),
FeedEntity(6, 3),
FeedEntity(7, 4),
)
)
}
}

View File

@@ -0,0 +1,82 @@
package org.schabi.newpipe.local.subscription;
import static org.junit.Assert.assertEquals;
import androidx.test.core.app.ApplicationProvider;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.schabi.newpipe.database.AppDatabase;
import org.schabi.newpipe.database.feed.model.FeedGroupEntity;
import org.schabi.newpipe.database.subscription.SubscriptionEntity;
import org.schabi.newpipe.extractor.channel.ChannelInfo;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.testUtil.TestDatabase;
import org.schabi.newpipe.testUtil.TrampolineSchedulerRule;
import java.io.IOException;
import java.util.List;
public class SubscriptionManagerTest {
private AppDatabase database;
private SubscriptionManager manager;
@Rule
public TrampolineSchedulerRule trampolineScheduler = new TrampolineSchedulerRule();
private SubscriptionEntity getAssertOneSubscriptionEntity() {
final List<SubscriptionEntity> entities = manager
.getSubscriptions(FeedGroupEntity.GROUP_ALL_ID, "", false)
.blockingFirst();
assertEquals(1, entities.size());
return entities.get(0);
}
@Before
public void setup() {
database = TestDatabase.Companion.createReplacingNewPipeDatabase();
manager = new SubscriptionManager(ApplicationProvider.getApplicationContext());
}
@After
public void cleanUp() {
database.close();
}
@Test
public void testInsert() throws ExtractionException, IOException {
final ChannelInfo info = ChannelInfo.getInfo("https://www.youtube.com/c/3blue1brown");
final SubscriptionEntity subscription = SubscriptionEntity.from(info);
manager.insertSubscription(subscription);
final SubscriptionEntity readSubscription = getAssertOneSubscriptionEntity();
// the uid has changed, since the uid is chosen upon inserting, but the rest should match
assertEquals(subscription.getServiceId(), readSubscription.getServiceId());
assertEquals(subscription.getUrl(), readSubscription.getUrl());
assertEquals(subscription.getName(), readSubscription.getName());
assertEquals(subscription.getAvatarUrl(), readSubscription.getAvatarUrl());
assertEquals(subscription.getSubscriberCount(), readSubscription.getSubscriberCount());
assertEquals(subscription.getDescription(), readSubscription.getDescription());
}
@Test
public void testUpdateNotificationMode() throws ExtractionException, IOException {
final ChannelInfo info = ChannelInfo.getInfo("https://www.youtube.com/c/veritasium");
final SubscriptionEntity subscription = SubscriptionEntity.from(info);
subscription.setNotificationMode(0);
manager.insertSubscription(subscription);
manager.updateNotificationMode(subscription.getServiceId(), subscription.getUrl(), 1)
.blockingAwait();
final SubscriptionEntity anotherSubscription = getAssertOneSubscriptionEntity();
assertEquals(0, subscription.getNotificationMode());
assertEquals(subscription.getUrl(), anotherSubscription.getUrl());
assertEquals(1, anotherSubscription.getNotificationMode());
}
}

View File

@@ -3,7 +3,6 @@ package org.schabi.newpipe
import androidx.preference.PreferenceManager
import com.facebook.stetho.Stetho
import com.facebook.stetho.okhttp3.StethoInterceptor
import leakcanary.AppWatcher
import leakcanary.LeakCanary
import okhttp3.OkHttpClient
import org.schabi.newpipe.extractor.downloader.Downloader
@@ -13,8 +12,6 @@ class DebugApp : App() {
super.onCreate()
initStetho()
// Give each object 10 seconds to be GC'ed, before LeakCanary gets nosy on it
AppWatcher.config = AppWatcher.config.copy(watchDurationMillis = 10000)
LeakCanary.config = LeakCanary.config.copy(
dumpHeap = PreferenceManager
.getDefaultSharedPreferences(this).getBoolean(

View File

@@ -9,6 +9,15 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<!-- We need to be able to open links in the browser on API 30+ -->
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
</intent>
</queries>
<uses-feature
android:name="android.hardware.touchscreen"
@@ -24,11 +33,12 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:logo="@mipmap/ic_launcher"
android:theme="@style/OpeningTheme"
android:resizeableActivity="true"
android:theme="@style/OpeningTheme"
tools:ignore="AllowBackup">
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask">
<intent-filter>
@@ -39,7 +49,9 @@
</intent-filter>
</activity>
<receiver android:name="androidx.media.session.MediaButtonReceiver">
<receiver
android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
@@ -47,7 +59,7 @@
<service
android:name=".player.PlayerService"
android:exported="false"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
@@ -56,15 +68,18 @@
<activity
android:name=".player.PlayQueueActivity"
android:exported="false"
android:label="@string/title_activity_play_queue"
android:launchMode="singleTask" />
<activity
android:name=".settings.SettingsActivity"
android:exported="false"
android:label="@string/settings" />
<activity
android:name=".about.AboutActivity"
android:exported="false"
android:label="@string/title_activity_about" />
<service android:name=".local.subscription.services.SubscriptionsImportService" />
@@ -73,6 +88,7 @@
<activity
android:name=".PanicResponderActivity"
android:exported="true"
android:launchMode="singleInstance"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
@@ -85,13 +101,18 @@
<activity
android:name=".ExitActivity"
android:exported="false"
android:label="@string/general_error"
android:theme="@android:style/Theme.NoDisplay" />
<activity android:name=".error.ErrorActivity" />
<activity
android:name=".error.ErrorActivity"
android:exported="false" />
<!-- giga get related -->
<activity
android:name=".download.DownloadActivity"
android:exported="false"
android:label="@string/app_name"
android:launchMode="singleTask" />
@@ -99,6 +120,7 @@
<activity
android:name=".util.FilePickerActivityHelper"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/FilePickerThemeDark">
<intent-filter>
@@ -109,6 +131,7 @@
<activity
android:name=".error.ReCaptchaActivity"
android:exported="false"
android:label="@string/recaptcha" />
<provider
@@ -124,6 +147,7 @@
<activity
android:name=".RouterActivity"
android:excludeFromRecents="true"
android:exported="true"
android:label="@string/preferred_open_action_share_menu_title"
android:taskAffinity=""
android:theme="@style/RouterActivityThemeDark">
@@ -149,6 +173,7 @@
<data android:pathPrefix="/watch" />
<data android:pathPrefix="/attribution_link" />
<data android:pathPrefix="/shorts/" />
<data android:pathPrefix="/live/" />
<!-- channel prefix -->
<data android:pathPrefix="/channel/" />
<data android:pathPrefix="/user/" />
@@ -332,16 +357,16 @@
<data android:host="eduvid.org" />
<data android:host="framatube.org" />
<data android:host="media.assassinate-you.net" />
<data android:host="media.fsfe.org" />
<data android:host="peertube.co.uk" />
<data android:host="peertube.cpy.re" />
<data android:host="peertube.mastodon.host" />
<data android:host="peertube.fr" />
<data android:host="tilvids.com" />
<data android:host="tube.privacytools.io" />
<data android:host="video.ploud.fr" />
<data android:host="video.lqdn.fr" />
<data android:host="peertube.mastodon.host" />
<data android:host="peertube.stream" />
<data android:host="skeptikon.fr" />
<data android:host="media.fsfe.org" />
<data android:host="tilvids.com" />
<data android:host="video.lqdn.fr" />
<data android:host="video.ploud.fr" />
<data android:pathPrefix="/videos/" /> <!-- it contains playlists -->
<data android:pathPrefix="/w/" /> <!-- short video URLs -->
@@ -354,30 +379,30 @@
<!-- Bandcamp filter for tracks, albums and playlists -->
<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"/>
<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"/>
<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="*.bandcamp.com"/>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="*.bandcamp.com" />
</intent-filter>
<!-- Bandcamp filter for radio -->
<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"/>
<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"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"/>
<data android:scheme="https"/>
<data android:sspPattern="bandcamp.com/?show=*"/>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:sspPattern="bandcamp.com/?show=*" />
</intent-filter>
</activity>
@@ -386,11 +411,17 @@
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" />
<meta-data
android:name="android.webkit.WebView.MetricsOptOut"
android:value="true" />
<!-- see https://github.com/TeamNewPipe/NewPipe/issues/3947 -->
<!-- Version < 3.0. DeX Mode and Screen Mirroring support -->
<meta-data android:name="com.samsung.android.keepalive.density" android:value="true"/>
<meta-data
android:name="com.samsung.android.keepalive.density"
android:value="true" />
<!-- Version >= 3.0. DeX Dual Mode support -->
<meta-data android:name="com.samsung.android.multidisplay.keep_process_alive" android:value="true"/>
<meta-data
android:name="com.samsung.android.multidisplay.keep_process_alive"
android:value="true" />
</application>
</manifest>

View File

@@ -20,9 +20,11 @@ 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.image.ImageStrategy;
import org.schabi.newpipe.util.image.PicassoHelper;
import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.util.StateSaver;
import org.schabi.newpipe.util.image.PreferredImageQuality;
import java.io.IOException;
import java.io.InterruptedIOException;
@@ -99,8 +101,9 @@ public class App extends Application {
// Initialize image loader
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
PicassoHelper.init(this);
PicassoHelper.setShouldLoadImages(
prefs.getBoolean(getString(R.string.download_thumbnail_key), true));
ImageStrategy.setPreferredImageQuality(PreferredImageQuality.fromPreferenceKey(this,
prefs.getString(getString(R.string.image_quality_key),
getString(R.string.image_quality_default))));
PicassoHelper.setIndicatorsEnabled(MainActivity.DEBUG
&& prefs.getBoolean(getString(R.string.show_image_indicators_key), false));

View File

@@ -12,7 +12,6 @@ import androidx.fragment.app.FragmentManager;
import icepick.Icepick;
import icepick.State;
import leakcanary.AppWatcher;
public abstract class BaseFragment extends Fragment {
protected final String TAG = getClass().getSimpleName() + "@" + Integer.toHexString(hashCode());
@@ -77,20 +76,33 @@ public abstract class BaseFragment extends Fragment {
protected void onRestoreInstanceState(@NonNull final Bundle savedInstanceState) {
}
@Override
public void onDestroy() {
super.onDestroy();
AppWatcher.INSTANCE.getObjectWatcher().watch(this);
}
/*//////////////////////////////////////////////////////////////////////////
// Init
//////////////////////////////////////////////////////////////////////////*/
/**
* This method is called in {@link #onViewCreated(View, Bundle)} to initialize the views.
*
* <p>
* {@link #initListeners()} is called after this method to initialize the corresponding
* listeners.
* </p>
* @param rootView The inflated view for this fragment
* (provided by {@link #onViewCreated(View, Bundle)})
* @param savedInstanceState The saved state of this fragment
* (provided by {@link #onViewCreated(View, Bundle)})
*/
protected void initViews(final View rootView, final Bundle savedInstanceState) {
}
/**
* Initialize the listeners for this fragment.
*
* <p>
* This method is called after {@link #initViews(View, Bundle)}
* in {@link #onViewCreated(View, Bundle)}.
* </p>
*/
protected void initListeners() {
}
@@ -108,9 +120,20 @@ public abstract class BaseFragment extends Fragment {
}
}
/**
* Finds the root fragment by looping through all of the parent fragments. The root fragment
* is supposed to be {@link org.schabi.newpipe.fragments.MainFragment}, and is the fragment that
* handles keeping the backstack of opened fragments in NewPipe, and also the player bottom
* sheet. This function therefore returns the fragment manager of said fragment.
*
* @return the fragment manager of the root fragment, i.e.
* {@link org.schabi.newpipe.fragments.MainFragment}
*/
protected FragmentManager getFM() {
return getParentFragment() == null
? getFragmentManager()
: getParentFragment().getFragmentManager();
Fragment current = this;
while (current.getParentFragment() != null) {
current = current.getParentFragment();
}
return current.getFragmentManager();
}
}

View File

@@ -157,9 +157,12 @@ public class MainActivity extends AppCompatActivity {
}
openMiniPlayerUponPlayerStarted();
// Schedule worker for checking for new streams and creating corresponding notifications
// if this is enabled by the user.
NotificationWorker.initialize(this);
if (PermissionHelper.checkPostNotificationsPermission(this,
PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE)) {
// Schedule worker for checking for new streams and creating corresponding notifications
// if this is enabled by the user.
NotificationWorker.initialize(this);
}
}
@Override
@@ -172,7 +175,7 @@ public class MainActivity extends AppCompatActivity {
if (prefs.getBoolean(app.getString(R.string.update_app_key), true)) {
// Start the worker which is checking all conditions
// and eventually searching for a new version.
NewVersionWorker.enqueueNewVersionCheckingWork(app);
NewVersionWorker.enqueueNewVersionCheckingWork(app, false);
}
}
@@ -216,14 +219,14 @@ public class MainActivity extends AppCompatActivity {
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
final StreamingService service = NewPipe.getService(currentServiceId);
int kioskId = 0;
int kioskMenuItemId = 0;
for (final String ks : service.getKioskList().getAvailableKiosks()) {
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, kioskId, 0, KioskTranslator
.add(R.id.menu_tabs_group, kioskMenuItemId, 0, KioskTranslator
.getTranslatedKioskName(ks, this))
.setIcon(KioskTranslator.getKioskIcon(ks));
kioskId++;
kioskMenuItemId++;
}
drawerLayoutBinding.navigation.getMenu()
@@ -232,7 +235,7 @@ public class MainActivity extends AppCompatActivity {
.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);
.setIcon(R.drawable.ic_subscriptions);
drawerLayoutBinding.navigation.getMenu()
.add(R.id.menu_tabs_group, ITEM_ID_BOOKMARKS, ORDER, R.string.tab_bookmarks)
.setIcon(R.drawable.ic_bookmark);
@@ -303,20 +306,16 @@ public class MainActivity extends AppCompatActivity {
NavigationHelper.openStatisticFragment(getSupportFragmentManager());
break;
default:
final int currentServiceId = ServiceHelper.getSelectedServiceId(this);
final StreamingService service = NewPipe.getService(currentServiceId);
String serviceName = "";
int kioskId = 0;
for (final String ks : service.getKioskList().getAvailableKiosks()) {
if (kioskId == item.getItemId()) {
serviceName = ks;
final StreamingService currentService = ServiceHelper.getSelectedService(this);
int kioskMenuItemId = 0;
for (final String kioskId : currentService.getKioskList().getAvailableKiosks()) {
if (kioskMenuItemId == item.getItemId()) {
NavigationHelper.openKioskFragment(getSupportFragmentManager(),
currentService.getServiceId(), kioskId);
break;
}
kioskId++;
kioskMenuItemId++;
}
NavigationHelper.openKioskFragment(getSupportFragmentManager(), currentServiceId,
serviceName);
break;
}
}
@@ -599,6 +598,9 @@ public class MainActivity extends AppCompatActivity {
((VideoDetailFragment) fragment).openDownloadDialog();
}
break;
case PermissionHelper.POST_NOTIFICATIONS_REQUEST_CODE:
NotificationWorker.initialize(this);
break;
}
}

View File

@@ -5,6 +5,8 @@ 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;
import static org.schabi.newpipe.database.Migrations.MIGRATION_4_5;
import static org.schabi.newpipe.database.Migrations.MIGRATION_5_6;
import static org.schabi.newpipe.database.Migrations.MIGRATION_6_7;
import android.content.Context;
import android.database.Cursor;
@@ -24,7 +26,8 @@ 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, MIGRATION_3_4, MIGRATION_4_5)
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_4_5,
MIGRATION_5_6, MIGRATION_6_7)
.build();
}

View File

@@ -1,19 +1,21 @@
package org.schabi.newpipe
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.util.Log
import android.widget.Toast
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.app.PendingIntentCompat
import androidx.core.content.ContextCompat
import androidx.core.content.edit
import androidx.core.net.toUri
import androidx.preference.PreferenceManager
import androidx.work.OneTimeWorkRequest
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkRequest
import androidx.work.Worker
import androidx.work.WorkerParameters
import androidx.work.workDataOf
import com.grack.nanojson.JsonParser
import com.grack.nanojson.JsonParserException
import org.schabi.newpipe.extractor.downloader.Response
@@ -42,26 +44,40 @@ class NewVersionWorker(
versionCode: Int
) {
if (BuildConfig.VERSION_CODE >= versionCode) {
if (inputData.getBoolean(IS_MANUAL, false)) {
// Show toast stating that the app is up-to-date if the update check was manual.
ContextCompat.getMainExecutor(applicationContext).execute {
Toast.makeText(
applicationContext, R.string.app_update_unavailable_toast,
Toast.LENGTH_SHORT
).show()
}
}
return
}
val app = App.getApp()
// A pending intent to open the apk location url in the browser.
val intent = Intent(Intent.ACTION_VIEW, apkLocationUrl?.toUri())
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pendingIntent = PendingIntent.getActivity(app, 0, intent, 0)
val channelId = app.getString(R.string.app_update_notification_channel_id)
val notificationBuilder = NotificationCompat.Builder(app, channelId)
val pendingIntent = PendingIntentCompat.getActivity(
applicationContext, 0, intent, 0, false
)
val channelId = applicationContext.getString(R.string.app_update_notification_channel_id)
val notificationBuilder = NotificationCompat.Builder(applicationContext, channelId)
.setSmallIcon(R.drawable.ic_newpipe_update)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setContentTitle(app.getString(R.string.app_update_notification_content_title))
.setContentText(
app.getString(R.string.app_update_notification_content_text) +
" " + versionName
.setContentIntent(pendingIntent)
.setContentTitle(
applicationContext.getString(R.string.app_update_available_notification_title)
)
val notificationManager = NotificationManagerCompat.from(app)
.setContentText(
applicationContext.getString(
R.string.app_update_available_notification_text, versionName
)
)
val notificationManager = NotificationManagerCompat.from(applicationContext)
notificationManager.notify(2000, notificationBuilder.build())
}
@@ -72,12 +88,14 @@ class NewVersionWorker(
return
}
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
// Check if the last request has happened a certain time ago
// to reduce the number of API requests.
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
if (!isLastUpdateCheckExpired(expiry)) {
return
if (!inputData.getBoolean(IS_MANUAL, false)) {
val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext)
// Check if the last request has happened a certain time ago
// to reduce the number of API requests.
val expiry = prefs.getLong(applicationContext.getString(R.string.update_expiry_key), 0)
if (!isLastUpdateCheckExpired(expiry)) {
return
}
}
// Make a network request to get latest NewPipe data.
@@ -102,13 +120,13 @@ class NewVersionWorker(
// Parse the json from the response.
try {
val githubStableObject = JsonParser.`object`()
val newpipeVersionInfo = JsonParser.`object`()
.from(response.responseBody()).getObject("flavors")
.getObject("github").getObject("stable")
.getObject("newpipe")
val versionName = githubStableObject.getString("version")
val versionCode = githubStableObject.getInt("version_code")
val apkLocationUrl = githubStableObject.getString("apk")
val versionName = newpipeVersionInfo.getString("version")
val versionCode = newpipeVersionInfo.getInt("version_code")
val apkLocationUrl = newpipeVersionInfo.getString("apk")
compareAppVersionAndShowNotification(versionName, apkLocationUrl, versionCode)
} catch (e: JsonParserException) {
// Most likely something is wrong in data received from NEWPIPE_API_URL.
@@ -120,43 +138,42 @@ class NewVersionWorker(
}
override fun doWork(): Result {
try {
return try {
checkNewVersion()
Result.success()
} catch (e: IOException) {
Log.w(TAG, "Could not fetch NewPipe API: probably network problem", e)
return Result.failure()
Result.failure()
} catch (e: ReCaptchaException) {
Log.e(TAG, "ReCaptchaException should never happen here.", e)
return Result.failure()
Result.failure()
}
return Result.success()
}
companion object {
private val DEBUG = MainActivity.DEBUG
private val TAG = NewVersionWorker::class.java.simpleName
private const val NEWPIPE_API_URL = "https://newpipe.net/api/data.json"
private const val IS_MANUAL = "isManual"
/**
* Start a new worker which
* checks if all conditions for performing a version check are met,
* fetches the API endpoint [.NEWPIPE_API_URL] containing info
* about the latest NewPipe version
* and displays a notification about ana available update.
* Start a new worker which checks if all conditions for performing a version check are met,
* fetches the API endpoint [.NEWPIPE_API_URL] containing info about the latest NewPipe
* version and displays a notification about an available update if one is available.
* <br></br>
* Following conditions need to be met, before data is request from the server:
* Following conditions need to be met, before data is requested from the server:
*
* * The app is signed with the correct signing key (by TeamNewPipe / schabi).
* If the signing key differs from the one used upstream, the update cannot be installed.
* * The user enabled searching for and notifying about updates in the settings.
* * The app did not recently check for updates.
* We do not want to make unnecessary connections and DOS our servers.
*
*/
@JvmStatic
fun enqueueNewVersionCheckingWork(context: Context) {
val workRequest: WorkRequest =
OneTimeWorkRequest.Builder(NewVersionWorker::class.java).build()
fun enqueueNewVersionCheckingWork(context: Context, isManual: Boolean) {
val workRequest = OneTimeWorkRequestBuilder<NewVersionWorker>()
.setInputData(workDataOf(IS_MANUAL to isManual))
.build()
WorkManager.getInstance(context).enqueue(workRequest)
}
}

View File

@@ -1,5 +1,6 @@
package org.schabi.newpipe;
import static org.schabi.newpipe.util.SparseItemUtil.fetchStreamInfoAndSaveToDatabase;
import static org.schabi.newpipe.util.external_communication.ShareUtils.shareText;
import android.content.Context;
@@ -10,6 +11,7 @@ import android.widget.PopupMenu;
import androidx.fragment.app.FragmentManager;
import org.schabi.newpipe.database.stream.model.StreamEntity;
import org.schabi.newpipe.download.DownloadDialog;
import org.schabi.newpipe.local.dialog.PlaylistDialog;
import org.schabi.newpipe.player.playqueue.PlayQueue;
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
@@ -73,7 +75,15 @@ public final class QueueItemMenuUtil {
return true;
case R.id.menu_item_share:
shareText(context, item.getTitle(), item.getUrl(),
item.getThumbnailUrl());
item.getThumbnails());
return true;
case R.id.menu_item_download:
fetchStreamInfoAndSaveToDatabase(context, item.getServiceId(), item.getUrl(),
info -> {
final DownloadDialog downloadDialog = new DownloadDialog(context,
info);
downloadDialog.show(fragmentManager, "downloadDialog");
});
return true;
}
return false;

File diff suppressed because it is too large Load Diff

View File

@@ -6,6 +6,7 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
@@ -57,13 +58,9 @@ class AboutActivity : AppCompatActivity() {
* A placeholder fragment containing a simple view.
*/
class AboutFragment : Fragment() {
private fun Button.openLink(url: Int) {
private fun Button.openLink(@StringRes url: Int) {
setOnClickListener {
ShareUtils.openUrlInBrowser(
context,
requireContext().getString(url),
false
)
ShareUtils.openUrlInApp(context, requireContext().getString(url))
}
}

View File

@@ -1,28 +1,38 @@
package org.schabi.newpipe.about
import android.os.Bundle
import android.util.Base64
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import androidx.appcompat.app.AlertDialog
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.schabi.newpipe.BuildConfig
import org.schabi.newpipe.R
import org.schabi.newpipe.databinding.FragmentLicensesBinding
import org.schabi.newpipe.databinding.ItemSoftwareComponentBinding
import org.schabi.newpipe.util.Localization
import org.schabi.newpipe.util.external_communication.ShareUtils
/**
* Fragment containing the software licenses.
*/
class LicenseFragment : Fragment() {
private lateinit var softwareComponents: Array<SoftwareComponent>
private var activeLicense: License? = null
private var activeSoftwareComponent: SoftwareComponent? = null
private val compositeDisposable = CompositeDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
softwareComponents = arguments?.getParcelableArray(ARG_COMPONENTS) as Array<SoftwareComponent>
activeLicense = savedInstanceState?.getSerializable(LICENSE_KEY) as? License
activeSoftwareComponent = savedInstanceState?.getSerializable(SOFTWARE_COMPONENT_KEY) as? SoftwareComponent
// Sort components by name
softwareComponents.sortBy { it.name }
}
@@ -39,9 +49,8 @@ class LicenseFragment : Fragment() {
): View {
val binding = FragmentLicensesBinding.inflate(inflater, container, false)
binding.licensesAppReadLicense.setOnClickListener {
activeLicense = StandardLicenses.GPL3
compositeDisposable.add(
showLicense(activity, StandardLicenses.GPL3)
showLicense(NEWPIPE_SOFTWARE_COMPONENT)
)
}
for (component in softwareComponents) {
@@ -57,26 +66,70 @@ class LicenseFragment : Fragment() {
val root: View = componentBinding.root
root.tag = component
root.setOnClickListener {
activeLicense = component.license
compositeDisposable.add(
showLicense(activity, component)
showLicense(component)
)
}
binding.licensesSoftwareComponents.addView(root)
registerForContextMenu(root)
}
activeLicense?.let { compositeDisposable.add(showLicense(activity, it)) }
activeSoftwareComponent?.let { compositeDisposable.add(showLicense(it)) }
return binding.root
}
override fun onSaveInstanceState(savedInstanceState: Bundle) {
super.onSaveInstanceState(savedInstanceState)
activeLicense?.let { savedInstanceState.putSerializable(LICENSE_KEY, it) }
activeSoftwareComponent?.let { savedInstanceState.putSerializable(SOFTWARE_COMPONENT_KEY, it) }
}
private fun showLicense(
softwareComponent: SoftwareComponent
): Disposable {
return if (context == null) {
Disposable.empty()
} else {
val context = requireContext()
activeSoftwareComponent = softwareComponent
Observable.fromCallable { getFormattedLicense(context, softwareComponent.license) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { formattedLicense ->
val webViewData = Base64.encodeToString(
formattedLicense.toByteArray(), Base64.NO_PADDING
)
val webView = WebView(context)
webView.loadData(webViewData, "text/html; charset=UTF-8", "base64")
Localization.assureCorrectAppLanguage(context)
val builder = AlertDialog.Builder(requireContext())
.setTitle(softwareComponent.name)
.setView(webView)
.setOnCancelListener { activeSoftwareComponent = null }
.setOnDismissListener { activeSoftwareComponent = null }
.setPositiveButton(R.string.done) { dialog, _ -> dialog.dismiss() }
if (softwareComponent != NEWPIPE_SOFTWARE_COMPONENT) {
builder.setNeutralButton(R.string.open_website_license) { _, _ ->
ShareUtils.openUrlInApp(requireContext(), softwareComponent.link)
}
}
builder.show()
}
}
}
companion object {
private const val ARG_COMPONENTS = "components"
private const val LICENSE_KEY = "ACTIVE_LICENSE"
private const val SOFTWARE_COMPONENT_KEY = "ACTIVE_SOFTWARE_COMPONENT"
private val NEWPIPE_SOFTWARE_COMPONENT = SoftwareComponent(
"NewPipe",
"2014-2023",
"Team NewPipe",
"https://newpipe.net/",
StandardLicenses.GPL3,
BuildConfig.VERSION_NAME
)
fun newInstance(softwareComponents: Array<SoftwareComponent>): LicenseFragment {
val fragment = LicenseFragment()
fragment.arguments = bundleOf(ARG_COMPONENTS to softwareComponents)

View File

@@ -1,17 +1,8 @@
package org.schabi.newpipe.about
import android.content.Context
import android.util.Base64
import android.webkit.WebView
import androidx.appcompat.app.AlertDialog
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.schedulers.Schedulers
import org.schabi.newpipe.R
import org.schabi.newpipe.util.Localization
import org.schabi.newpipe.util.ThemeHelper
import org.schabi.newpipe.util.external_communication.ShareUtils
import java.io.IOException
/**
@@ -20,7 +11,7 @@ import java.io.IOException
* @return String which contains a HTML formatted license page
* styled according to the context's theme
*/
private fun getFormattedLicense(context: Context, license: License): String {
fun getFormattedLicense(context: Context, license: License): String {
try {
return context.assets.open(license.filename).bufferedReader().use { it.readText() }
// split the HTML file and insert the stylesheet into the HEAD of the file
@@ -34,7 +25,7 @@ private fun getFormattedLicense(context: Context, license: License): String {
* @param context the Android context
* @return String which is a CSS stylesheet according to the context's theme
*/
private fun getLicenseStylesheet(context: Context): String {
fun getLicenseStylesheet(context: Context): String {
val isLightTheme = ThemeHelper.isLightThemeSelected(context)
val licenseBackgroundColor = getHexRGBColor(
context, if (isLightTheme) R.color.light_license_background_color else R.color.dark_license_background_color
@@ -56,48 +47,6 @@ private fun getLicenseStylesheet(context: Context): String {
* @param color the color number from R.color
* @return a six characters long String with hexadecimal RGB values
*/
private fun getHexRGBColor(context: Context, color: Int): String {
fun getHexRGBColor(context: Context, color: Int): String {
return context.getString(color).substring(3)
}
fun showLicense(context: Context?, component: SoftwareComponent): Disposable {
return showLicense(context, component.license) {
setPositiveButton(R.string.dismiss) { dialog, _ ->
dialog.dismiss()
}
setNeutralButton(R.string.open_website_license) { _, _ ->
ShareUtils.openUrlInBrowser(context!!, component.link)
}
}
}
fun showLicense(context: Context?, license: License) = showLicense(context, license) {
setPositiveButton(R.string.ok) { dialog, _ -> dialog.dismiss() }
}
private fun showLicense(
context: Context?,
license: License,
block: AlertDialog.Builder.() -> AlertDialog.Builder
): Disposable {
return if (context == null) {
Disposable.empty()
} else {
Observable.fromCallable { getFormattedLicense(context, license) }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { formattedLicense ->
val webViewData =
Base64.encodeToString(formattedLicense.toByteArray(), Base64.NO_PADDING)
val webView = WebView(context)
webView.loadData(webViewData, "text/html; charset=UTF-8", "base64")
Localization.assureCorrectAppLanguage(context)
AlertDialog.Builder(context)
.setTitle(license.name)
.setView(webView)
.block()
.show()
}
}
}

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