Commit graph

10871 commits

Author SHA1 Message Date
Stypox
e4987d9a59
Update NewPipeExtractor again 2022-07-04 23:30:20 +02:00
litetex
155c6e94a3
Use correct `NonNull` 2022-07-04 23:19:41 +02:00
litetex
4e285a4e70
Fix compile errors 2022-07-04 23:19:41 +02:00
litetex
9c00e681bb
Updated extractor to latest revision 2022-07-04 23:19:41 +02:00
Stypox
81369d7e04
Merge pull request #8531 from litetex/fix-extractor-compile-errors-846
Updated extractor to latest revision and fix compile errors
2022-07-04 23:16:55 +02:00
Stypox
160891592b
Merge pull request #8564 from Stypox/fix-view-count
Actually fix history view count
2022-07-04 23:06:09 +02:00
Stypox
70b20f90cd
Align playlist thumbnail to left for more visibility 2022-07-04 22:37:27 +02:00
Stypox
47a2adca96
Make thumbnails' scaleType fitCenter
Otherwise e.g. shorts thumbnails would be cropped too much
2022-07-04 21:43:31 +02:00
mhmdanas
a1f1acfbf9 Use minimum required permissions for GitHub workflows
This reduces the attack surface if the workflows are ever compromised.
2022-07-03 20:38:51 +03:00
TacoTheDank
00b9c082a3 Set setUsePlatformDiagnostics to false 2022-07-02 15:01:39 -04:00
Stypox
45d2492bcb
Run CI on all release branches (#8565)
We don't seem to agree on which character to use as a separator between `release` and `X.X.X` in release branch names (e.g. `release-0.23.1` or `release/0.23.0`). All those names start with `release`, though, so let's use that to identify releases.
2022-07-02 00:08:44 +03:00
Stypox
085d1e0d38
Actually fix wrong view count 2022-07-01 16:07:19 +02:00
TacoTheDank
1404581e9b Update ExoPlayer to 2.18.0 2022-06-25 21:14:42 -04:00
opusforlife2
d5985be94a
Made some much needed changes to the ReadMe (#8372)
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
Co-authored-by: Poolitzer <github@poolitzer.eu>
2022-06-26 01:13:54 +03:00
Stypox
4ee1cd5826
Release v0.23.1 (987) 2022-06-24 19:01:37 +02:00
Stypox
dc7fce86a5
Add changelog for v0.23.1 (987) 2022-06-24 18:52:45 +02:00
Carlos Melero
f22417e7e7 Add option to hide future videos in feed 2022-06-24 18:03:48 +02:00
Hosted Weblate
10c9661369
Translated using Weblate (Bengali)
Currently translated at 89.0% (564 of 633 strings)

Translated using Weblate (Finnish)

Currently translated at 95.8% (607 of 633 strings)

Translated using Weblate (Bengali (Bangladesh))

Currently translated at 65.5% (415 of 633 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (French)

Currently translated at 100.0% (633 of 633 strings)

Added translation using Weblate (English (Old))

Translated using Weblate (French)

Currently translated at 65.6% (44 of 67 strings)

Translated using Weblate (Basque)

Currently translated at 25.3% (17 of 67 strings)

Translated using Weblate (Filipino)

Currently translated at 5.9% (4 of 67 strings)

Translated using Weblate (Bengali)

Currently translated at 88.3% (559 of 633 strings)

Translated using Weblate (Bengali (India))

Currently translated at 49.2% (312 of 633 strings)

Translated using Weblate (Bengali (India))

Currently translated at 49.2% (312 of 633 strings)

Translated using Weblate (Filipino)

Currently translated at 36.9% (234 of 633 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Dutch (Belgium))

Currently translated at 90.5% (573 of 633 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (French)

Currently translated at 64.1% (43 of 67 strings)

Translated using Weblate (Dutch)

Currently translated at 70.1% (47 of 67 strings)

Translated using Weblate (Italian)

Currently translated at 38.8% (26 of 67 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (French)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (67 of 67 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Basque)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (67 of 67 strings)

Translated using Weblate (Turkish)

Currently translated at 31.3% (21 of 67 strings)

Translated using Weblate (Bengali)

Currently translated at 85.6% (542 of 633 strings)

Translated using Weblate (Kurdish (Central))

Currently translated at 99.8% (632 of 633 strings)

Translated using Weblate (Malayalam)

Currently translated at 92.1% (583 of 633 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (French)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Danish)

Currently translated at 93.0% (589 of 633 strings)

Translated using Weblate (Danish)

Currently translated at 4.4% (3 of 67 strings)

Translated using Weblate (Portuguese (Portugal))

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Danish)

Currently translated at 75.0% (475 of 633 strings)

Translated using Weblate (Czech)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Latvian)

Currently translated at 93.8% (594 of 633 strings)

Translated using Weblate (Latvian)

Currently translated at 93.8% (594 of 633 strings)

Translated using Weblate (Latvian)

Currently translated at 4.4% (3 of 67 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (67 of 67 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (67 of 67 strings)

Translated using Weblate (Belarusian)

Currently translated at 1.4% (1 of 67 strings)

Translated using Weblate (Bengali)

Currently translated at 84.9% (538 of 633 strings)

Translated using Weblate (Sardinian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Danish)

Currently translated at 50.3% (319 of 633 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Azerbaijani)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Swedish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Bengali (Bangladesh))

Currently translated at 63.8% (404 of 633 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Persian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Greek)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Serbian)

Currently translated at 92.4% (585 of 633 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (French)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Spanish)

Currently translated at 97.7% (619 of 633 strings)

Translated using Weblate (German)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Turkish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Vietnamese)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (633 of 633 strings)

Translated using Weblate (Polish)

Currently translated at 100.0% (633 of 633 strings)

Co-authored-by: Agnieszka C <aga_04@o2.pl>
Co-authored-by: AioiLight <info@aioilight.space>
Co-authored-by: Ajeje Brazorf <lmelonimamo@yahoo.it>
Co-authored-by: Alex25820 <alexs25820@gmail.com>
Co-authored-by: Cerins <cerins4141@gmail.com>
Co-authored-by: Corc <nizamismidov4@gmail.com>
Co-authored-by: Cyndaquissshhh <iversonbriones123@gmail.com>
Co-authored-by: Công Phúc <timnguyenaklc1133@gmail.com>
Co-authored-by: D āvis <dlektauers@gmail.com>
Co-authored-by: Danial Behzadi <dani.behzi@ubuntu.com>
Co-authored-by: Digiwizkid <subhadiplayek@gmail.com>
Co-authored-by: Edward <edwardchirita@mailbox.org>
Co-authored-by: Emin Tufan Çetin <etcetin@gmail.com>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Giovanni Donisi <giovannidonisi0701@gmail.com>
Co-authored-by: Gontzal Manuel Pujana Onaindia <thadahdenyse@gmail.com>
Co-authored-by: Himadri Bhattacharjee <handhimadrink@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: Jacob <axin6e7weujc@beconfidential.com>
Co-authored-by: Jalaluddin <ju81@ymail.com>
Co-authored-by: Jeff Huang <s8321414@gmail.com>
Co-authored-by: Linerly <linerly@protonmail.com>
Co-authored-by: Linkan Majumder <linkan469@gmail.com>
Co-authored-by: MS-PC <MSPCtranslator@gmail.com>
Co-authored-by: Marian Hanzel <marulinko@gmail.com>
Co-authored-by: Mathias Hamza Vedsted-Mirza <mathiashamzamirza@outlook.com>
Co-authored-by: Mohammed Anas <triallax@tutanota.com>
Co-authored-by: MohammedSR Vevo <mohammednajmidin@gmail.com>
Co-authored-by: Nicky Db <nickydbruyn@gmail.com>
Co-authored-by: Nikhil Anilkumar <rootshell348@gmail.com>
Co-authored-by: Nikodem Zawirski <nikon96@gmail.com>
Co-authored-by: Nizami <nizamismidov4@gmail.com>
Co-authored-by: Nizami semidov <revanced2022@gmail.com>
Co-authored-by: Onni <onnip@protonmail.com>
Co-authored-by: Oymate <dhruboadittya96@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: Steven Felix <stevenfelix505@gmail.com>
Co-authored-by: TXRdev Archive <lckphanaf9999@gmail.com>
Co-authored-by: Terry Louwers <t.louwers@gmail.com>
Co-authored-by: Translator <kvb@tuta.io>
Co-authored-by: Vasilis K <skyhirules@gmail.com>
Co-authored-by: WB <web0nst@tuta.io>
Co-authored-by: Yaron Shahrabani <sh.yaron@gmail.com>
Co-authored-by: bomzhellino <adm.bomzh@gmail.com>
Co-authored-by: bruh <quangtrung02hn16@gmail.com>
Co-authored-by: jazzyjabroni <lordcarmack@tuta.io>
Co-authored-by: metezd <itoldyouthat@protonmail.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: translator <kvb@tuta.io>
Co-authored-by: vmisovic <vladimir.misovic03@gmail.com>
Co-authored-by: zeritti <woodenmo@posteo.de>
Co-authored-by: Éfrit <efrit@posteo.net>
Co-authored-by: Óscar Fernández Díaz <oscfdezdz@tuta.io>
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/az/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/be/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/da/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/eu/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/fil/
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/lv/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/nl/
Translate-URL: https://hosted.weblate.org/projects/newpipe/metadata/tr/
Translation: NewPipe/Metadata
2022-06-24 15:12:07 +02:00
litetex
ad97b3d995 Use correct `NonNull` 2022-06-22 19:54:46 +02:00
litetex
04e8e03d8f Fix compile errors 2022-06-22 19:47:03 +02:00
litetex
bd19013771 Updated extractor to latest revision 2022-06-22 19:47:02 +02:00
Stypox
3901ffca17
Merge pull request #8153 from AudricV/delivery-methods-v2
Support delivery methods other than progressive HTTP
2022-06-22 11:21:52 +02:00
AudricV
cbd3308da6
Ensure that progressive contents are URL contents for playback
A ResolverException will be now thrown otherwise.
2022-06-19 15:41:29 +02:00
Stypox
0ad6b3b88e
Improve download_dialog.xml unsupported streams notice 2022-06-18 19:16:36 +02:00
Stypox
4e87f5aabc
Remove misleading first "Non" from getNonUrlAndNonTorrentStreams 2022-06-18 18:52:32 +02:00
Stypox
2019af831a
Refactor PlaybackResolver and fix cacheKeyOf
In commonCacheKeyOf the result of an Objects.hash() was ignored
2022-06-18 18:41:44 +02:00
Stypox
1e076ea63d
Wrap debug log in if(DEBUG) 2022-06-18 18:09:12 +02:00
Stypox
4863084fa2
Improve code in VideoDetailFragment 2022-06-18 17:49:04 +02:00
Stypox
7ba79171c7
Refactor creation of DownloadDialog 2022-06-18 17:40:22 +02:00
AudricV
e3c2aea3cc
Fix playback of non-URI HLS streams
A custom HlsPlaylistParserFactory cannot be used anymore to play HLS streams.

This needs to be replaced by a custom HlsDataSourceFactory, which returns a ByteArrayDataSource (where the bytes of this DataSource correspond to the bytes of the playlist string) and a specified DataSource for other request types.

This model has two limitations:

- if media requests are relative, the URI from which the manifest comes from (either the manifest URI (preferred) or the master URI (if applicable)) must be returned, otherwise the content will be not playable, as it will be an invalid URL, or it may be treat as something unexpected, for instance as a file for DefaultDataSources;
- if the playlist is a master playlist, endless loops should be encountered because the DataSources created for media playlists will use the master playlist response instead of fetching the corresponding playlist. With the current model of HlsDataSourceFactory, there is no possibility to distinguish the playlist type or the URI that is requested.

If ExoPlayer provides a way to create HlsMediaSources with an HlsPlaylist in the future, it should be used instead of this solution.
2022-06-17 22:01:30 +02:00
AudricV
21c9530e8b
Throw a dedicated exception when errors occur in PlaybackResolver
A new exception, ResolverException, a subclass of PlaybackResolver, is now thrown when errors occur in PlaybackResolver, instead of an IOException
2022-06-17 22:01:29 +02:00
AudricV
036196a487
Filter streams using Java 8 Stream's API instead of removing streams with list iterators and add a better toast when there is no audio stream for external players
This ensures to not remove streams from the StreamInfo lists themselves, and so to not have to create list copies.

The toast shown in RouterActivity, when there is no audio stream available for external players, is now shown, in the same case, when pressing the background button in VideoDetailFragment.
2022-06-17 22:01:29 +02:00
AudricV
73855cacb7
Use StreamTypeUtil where possible and add isAudio and isVideo to this utility class 2022-06-17 22:01:26 +02:00
Stypox
8dad6d7e1c
Code improvements here and there 2022-06-17 22:00:53 +02:00
Stypox
e5ffa2aa09
Add comments to PlaybackResolver and remove useless @NonNull 2022-06-17 22:00:52 +02:00
Stypox
8445c381c5
Use DownloaderImpl.USER_AGENT directly
instead of passing it as a parameter
2022-06-17 22:00:52 +02:00
Stypox
fa46b7bf85
Add comments and use downloader user agent in YT data source
YoutubeHttpDataSource
2022-06-17 22:00:52 +02:00
Stypox
7ce2250d85
Improve CacheFactory and PlayerDataSource code 2022-06-17 22:00:51 +02:00
Stypox
ef20d9b91a
Move stream's cache key generation in PlaybackResolver and improve PlaybackResolver's code 2022-06-17 22:00:51 +02:00
AudricV
fbee310261
Move SimpleCache creation in PlayerDataSource to avoid an IllegalStateException
This IllegalStateException, almost not reproducible, indicates that another SimpleCache instance uses the cache folder, which was so trying to be created at least twice.
Moving the SimpleCache creation in PlayerDataSource should avoid this exception.
2022-06-17 22:00:51 +02:00
AudricV
7d6bf4b0ca
Improve dialog of streams for external players and fix use of the wrong codec in the list of available streams in it after a codec change in Video and Audio settings
The VideoDetailFragment will now get video streams dynamically instead of storing them as a field, so the good codec can be chosen by ListHelper.
To select a stream to play, user has now to select the quality in the list of available qualities and then press the new OK button in the alert dialog.
2022-06-17 22:00:50 +02:00
AudricV
210834fbe9
Add support of other delivery methods than progressive HTTP (in the player only)
Detailed changes:

- External players:

  - Add a message instruction about stream selection;
  - Add a message when there is no stream available for external players;
  - Return now HLS, DASH and SmoothStreaming URL contents, in addition to progressive HTTP ones.

- Player:

  - Support DASH, HLS and SmoothStreaming streams for videos, whether they are content URLs or the manifests themselves, in addition to progressive HTTP ones;
  - Use a custom HttpDataSource to play YouTube contents, based of ExoPlayer's default one, which allows better spoofing of official clients (custom user-agent and headers (depending of the client used), use of range and rn (set dynamically by the DataSource) parameters);
  - Fetch YouTube progressive contents as DASH streams, like official clients, support fully playback of livestreams which have ended recently and OTF streams;
  - Use ExoPlayer's default retries count for contents on non-fatal errors (instead of Integer.MAX_VALUE for non-live contents and 5 for live contents).

- Download dialog:

  - Add message about support of progressive HTTP streams only for downloading;
  - Remove several duplicated code and update relevant usages;
  - Support downloading of contents with an unknown media format.

- ListHelper:

  - Catch NumberFormatException when trying to compare two video streams between them.

- Tests:

  - Update ListHelperTest and StreamItemAdapterTest to fix breaking changes in the extractor.

- Other places:

  - Fixes deprecation of changes made in the extractor;
  - Improve some code related to the files changed.

- Issues fixed and/or improved with the changes:

  - Seeking of PeerTube HLS streams (the duration shown was the one from the stream duration and not the one parsed, incomplete because HLS streams are fragmented MP4s with multiple sidx boxes, for which seeking is not supported by ExoPlayer) (the app now uses the HLS manifest returned for each quality, in the master playlist (not fetched and computed by the extractor));
  - Crash when loading PeerTube streams with a separated audio;
  - Lack of some streams on some YouTube videos (OTF streams);
  - Loading times of YouTube streams, after a quality change or a playback start;
  - View count of YouTube ended livestreams interpreted as watching count (this type of streams is not interpreted anymore as livestreams);
  - Watchable time of YouTube ended livestreams;
  - Playback of SoundCloud HLS-only tracks (which cannot be downloaded anymore because the workaround which was used is being removed by SoundCloud, so it has been removed from the extractor).
2022-06-17 22:00:22 +02:00
TacoTheDank
24cf19710f Clean up proguard file 2022-06-09 11:34:57 -04:00
Stypox
a59660f421
Merge pull request #8340 from litetex/fix-add-to-playlist
Fix "Add to playlist" not working and cleanup "RouterActivity" choice handling
2022-06-05 11:47:51 +02:00
litetex
be5af0b777 Made statusbar color transparent for RouterActivity (Android 5+)
Fix for https://github.com/TeamNewPipe/NewPipe/pull/8332
2022-06-04 15:22:36 +02:00
Stypox
75e5fe7d27
Merge pull request #8404 from Isira-Seneviratne/Use_AppCompatResources
Use AppCompatResources.
2022-05-30 15:42:04 +02:00
litetex
2985258074 Bonus fix: Made `single_choice_dialog_view` scrollable + use viewbinding 2022-05-28 00:46:28 +02:00
litetex
911ac65d1e Code cleanup 2022-05-28 00:46:27 +02:00
litetex
d2967f514b Improved docs, format and code style 2022-05-28 00:46:27 +02:00
litetex
a68c6a2cfc Reworked incorrect choice handling and centralized it 2022-05-28 00:39:13 +02:00