2237 Commits

Author SHA1 Message Date
G-flat
97083dbe12 Add test for YouTube video with no title 2026-03-01 00:58:34 +11:00
G-flat
04257a0752 Return an empty title string for YouTube videos with no title 2026-02-22 15:18:18 +11:00
Tobi
824486dfdf Merge pull request #1449 from dustdfg/enumset_mediacaps
Use EnumSet instead of List for MediaCapabilities inside Service
2026-02-21 07:53:52 -08:00
tobigr
a5aa7a09a3 Don't specify implementation, just the interface 2026-02-21 16:51:52 +01:00
Tobi
ba70ea780d Merge pull request #1450 from G-flat/fix_soundcloud_track_id_overflow
[SoundCloud] Use long integers (64-bit) for track IDs to prevent overflows
2026-02-20 17:12:30 -08:00
tobigr
df10cc145f Record mocks correctly 2026-02-21 02:09:12 +01:00
Yevhen Babiichuk (DustDFG)
857c181d40 Use EnumSet instead of List for MediaCapabilities inside Service 2026-02-13 10:49:44 +02:00
Yevhen Babiichuk (DustDFG)
023c3dee88 Youtube: throw AccountTerminatedException when account is terminated 2026-02-12 03:31:42 +02:00
G-flat
8a4aab4f4b Add SoundcloudStreamExtractor tests for a small track ID and a track ID larger than 32 bits 2026-02-01 01:01:08 +11:00
G-flat
fe9c57c007 Update mocks to fix failing SoundcloudPlaylistExtractor tests 2026-01-31 12:42:14 +11:00
tobigr
9831bcc5c5 Add more tests for invalid channel URL patterns 2026-01-30 15:46:01 +01:00
G-flat
75a4ccbd78 Add tests for newly supported channel URLs and fix regression 2026-01-30 15:14:30 +01:00
G-flat
345c7f4ec6 Fix checkstyle issue 2026-01-30 15:14:30 +01:00
G-flat
ece968d794 Support more YouTube channels 2026-01-30 15:14:29 +01:00
Stypox
d6e5743a6d [YouTube] Add test and mocks for new meta info format 2026-01-29 16:10:39 +01:00
Stypox
5bc2478738 [YouTube] Support a new type of meta info 2026-01-29 16:09:37 +01:00
G-flat
5d3eaca141 Use 64-bit SoundCloud track IDs 2026-01-28 14:41:43 +11:00
Stypox
4a729a7c7e [YouTube] Update some mocks 2026-01-27 19:32:57 +01:00
Stypox
dee84c3ed0 [YouTube] Fix/ignore failing tests after YouTube fully removed Trending 2026-01-27 19:32:57 +01:00
Stypox
b6ed15a756 [YouTube] Fix test for non existent streams
Now YouTube returns just "{}" without any better explanation, so ParsingException is thrown by the extractor. Now users won't get told that the video they are trying to watch does not exist at all, but since YouTube literally provides an empty JSON response we have no way to detect if the video does not exist or if there is some other bug in the way we make requests that causes an empty response.
2026-01-27 19:32:57 +01:00
Stypox
c8c9af16a8 [YouTube] Fix mm:ss timestamps being replaced with text in descriptions 2026-01-27 19:32:57 +01:00
Stypox
8a415cadfd [YouTube] Fix n-sig parsing for player c9168c90 2026-01-27 19:32:57 +01:00
Stypox
92e0250582 [YouTube] Replace now-unavailable video IDs used in tests 2026-01-27 19:32:57 +01:00
Stypox
cdfcdb3ad5 [YouTube] Update terminated channels tests
One of the tests had to be removed since I could not find a channel which has that message, and according to https://youtube.fandom.com/wiki/Termination#Ban_Messages that message is "deprecated" so maybe it does not exist anymore.
2026-01-27 19:32:57 +01:00
Stypox
400db4336b Throw error if "downloader" test param has invalid value 2026-01-27 19:32:57 +01:00
Stypox
ed48df2a35 [YouTube] Address review comments 2026-01-27 19:31:03 +01:00
AudricV
8133708d22 [YouTube] Update mocks 2026-01-26 19:08:52 +01:00
AudricV
cfa985451e [YouTube] Fix page reload required error on streams
Playability status for the WEB client isn't checked anymore, as it
requires a valid signatureTimestamp from JavaScript player to avoid a
page reload error. Until we can get and use n parameter function
decoding for streaming URLs of HTML5 clients again and support SABR
streams, it doesn't really make sense to fetch a huge JavaScript player
just to get metadata.

Age-restricted content which can be watched with the embedded player is
also broken due to extraction failure and non-ability to run the n
parameter function, so fetching this embedded player has been also
removed and all age-restricted content will throw an
AgeRestrictedContentException.

Playability error status checks have been adapted, as mobile clients get
different error responses than the WEB client.

Some strings have been extracted into constants and a fallback for
unlisted privacy check has been added, in YoutubeStreamExtractor for
both points.
2026-01-24 20:39:37 +01:00
AudricV
b1175a4dbf [YouTube] Update clients versions and remove unused TVHTML5 one 2026-01-24 08:57:43 +01:00
Yevhen Babiichuk (DustDFG)
a1e5e93871 Fix regression where all ListLinkHandlerFactories of media.ccc.de
were replaces with one

Regression was introduced in 1e8474b22d
2026-01-05 21:48:47 +02:00
FineFindus
f987c1afae [YouTube] Extract shorts thumbnails from thumbnailViewModel
Fixes an issue, where shorts thumbnails where not extracted, as they're now
contained within a `thumbnailViewModel`, instead of a simple `thumbnail`
object.

Closes: https://github.com/TeamNewPipe/NewPipe/issues/12907
2025-12-15 21:51:18 +01:00
FineFindus
0617c8834c [YouTube] Extract xtags of formats
Extracts the `xtags` field, which encodes additional data of the format, such
as if the format is using dynamic range compression.
This is required for using SABR.
2025-11-30 11:57:06 +01:00
FineFindus
a431a90025 [YouTube] Extract lastModified format data
Extracts the `lastModified` field of format, which is need for initiating SABR
playback.
2025-11-30 11:57:06 +01:00
FineFindus
f6bfd8ec2e [YouTube] support extracting DRC audio
Implements support for checking whether an extracted audio format is using
dynamic range compression (DRC).

Ref: https://en.wikipedia.org/wiki/Dynamic_range_compression
2025-11-30 11:23:59 +01:00
Isira Seneviratne
fdce7bd7ec Fix test 2025-11-26 18:29:23 +05:30
FineFindus
d051342ed7 [YouTube] Correctly handle unverified channels 2025-11-01 09:16:27 +01:00
FineFindus
c3362e9d1f [YouTube] Retrieve channel details for videos with multiple uploaders
Implements support for loading the channel details, of the channel that
actually owns the video, for videos with multiple uploaders.
2025-11-01 09:16:26 +01:00
FineFindus
56e41f2b06 [YouTube] Extract uploader URL for videos with multiple uploaders
Fixes an issue, where for videos with multiple uploaders/collaborators, the
uploader URL could not be extracted, leading to the entire video failing to be
extracted. This is fixed by extracting the URL of the first collaborator, which
appears to be the main channel where the video is actually displayed.

Closes: https://github.com/TeamNewPipe/NewPipeExtractor/issues/1333
2025-10-31 16:30:44 +01:00
Tobi
3af73262cc Merge pull request #1387 from that1potato/issue#12251
Fix SoundCloud channel tab pagination looping on empty pages
2025-10-15 00:29:42 -07:00
tobigr
702f1b029e Record mocks for new test
gradle :extractor:test --tests "org.schabi.newpipe.extractor.services.soundcloud.SoundcloudChannelTabExtractorTest$NoEmptyNextPages" -Ddownloader=RECORDING
2025-10-15 11:53:07 +11:00
tobigr
d7a38f26b7 [SoundCloud] Add test to check that next pages are not empty for tabs 2025-10-15 11:53:07 +11:00
Brian Zhang
d6165fa529 Fix SoundCloud artist tracks page infinite loading
Style fix: remove trailing space at line 28

Update MAX_EMPTY_PAGES value to 3 with proper JDoc formatting

Add JavaDoc for MAX_EMPTY_PAGES

Rewite getPage method to internally handle emptyItems case
2025-10-15 11:53:07 +11:00
TobiGr
5108cdd5da Update mocks for tests 2025-10-14 14:05:12 +02:00
m
880f705df4 Additional StreamLinkHandler text for m.soundcloud 2025-10-12 21:49:31 -07:00
m
4ff8438263 Proper regex for on.soundcloud URLs
Follow-up fix to 02e14b8931
2025-10-12 21:49:12 -07:00
Isira Seneviratne
2b306a32e5 Remove unthrown exception 2025-10-10 08:41:57 +05:30
Isira Seneviratne
e26cc84f99 Added documentation for parsing methods 2025-10-10 08:19:10 +05:30
Isira Seneviratne
fa4b717556 Update YoutubeStreamInfoItemLockupExtractor 2025-10-10 05:31:30 +05:30
Isira Seneviratne
2d794e7a6d Fix nullable annotations 2025-10-08 08:24:35 +05:30
Isira Seneviratne
9355798bcc Reduce some lines of code 2025-10-08 08:23:16 +05:30