Skip to content

merge latest changes from upstream#26

Open
feuerswut wants to merge 62 commits into
polymorphicshade:masterfrom
feuerswut:master
Open

merge latest changes from upstream#26
feuerswut wants to merge 62 commits into
polymorphicshade:masterfrom
feuerswut:master

Conversation

@feuerswut
Copy link
Copy Markdown

@feuerswut feuerswut commented May 26, 2026

this PR backports all recent changes to the newpipe extractor to the tubular extractor. it is needed to fix an extraction issue preventing the app from displaying the video feed of channels (upstream hotfix). tested with my other repo containing the app buildt with these changes.

dependabot Bot and others added 30 commits March 20, 2026 09:03
Bumps gradle-wrapper from 9.3.1 to 9.4.1.

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…apper-9.4.1

Bump gradle-wrapper from 9.3.1 to 9.4.1
Bumps com.google.protobuf:protobuf-javalite from 4.34.0 to 4.34.1.

---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-javalite
  dependency-version: 4.34.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…e.protobuf-protobuf-javalite-4.34.1

Bump com.google.protobuf:protobuf-javalite from 4.34.0 to 4.34.1
Set ConsoleLogger globally for all tests
Add string formatting to logger
Add tests for logger formatting
…_lockup_duration

[YouTube] Fix fetching item duration from the new A/B test
See #1473
- Created generated_mock_2.json and generated_mock_3.json to simulate responses for tracks without comments.
- Added generated_mock_4.json to represent a response for fetching comments on a track that has none.
- Each mock includes request details, response headers, and body structure to facilitate testing.
Fix Soundcloud comments crash by handling null page URLs
- getDuration() returns -1 instead of throwing when no duration badge
  is present (e.g. Shorts in related section)
- Add null guard before String.matches() to avoid NPE on missing badge text
- determineStreamType() now also checks thumbnailBottomOverlayViewModel
  badges for the live style, so live streams in related videos are
  correctly identified as LIVE_STREAM instead of VIDEO_STREAM
- Update Javadoc to reflect Shorts behaviour
Tests cover: normal video with duration badge, video without duration
badge (Shorts), and live stream. Mocks added for all three cases.
Update disabled testMoreRelatedItems comment to reflect the fix.
Bumps com.google.protobuf from 0.9.6 to 0.10.0.

---
updated-dependencies:
- dependency-name: com.google.protobuf
  dependency-version: 0.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [org.jsoup:jsoup](https://github.com/jhy/jsoup) from 1.22.1 to 1.22.2.
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](jhy/jsoup@jsoup-1.22.1...jsoup-1.22.2)

---
updated-dependencies:
- dependency-name: org.jsoup:jsoup
  dependency-version: 1.22.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…-jsoup-1.22.2

Bump org.jsoup:jsoup from 1.22.1 to 1.22.2
TobiGr and others added 24 commits May 4, 2026 10:20
…apper-9.5.0

Bump gradle-wrapper from 9.4.1 to 9.5.0
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.0 to 9.5.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](gradle/gradle@v9.5.0...v9.5.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
…apper-9.5.1

Bump gradle-wrapper from 9.5.0 to 9.5.1
Bumps com.google.protobuf:protobuf-javalite from 4.34.1 to 4.35.0.

---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-javalite
  dependency-version: 4.35.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
…e.protobuf-protobuf-javalite-4.35.0

Bump com.google.protobuf:protobuf-javalite from 4.34.1 to 4.35.0
Also explicitly return no avatars instead of throwing an exception, as
author info is not provided in channel tabs' videos.
Channel tabs omit the uploader name row in lockupViewModel metadata,
so the date is located at row 0, part 1 instead of row 1, part 1.

Without this fix, all videos extracted from channel tabs have null
upload dates and are discarded by NewPipe's feed database manager.

Fixes missing videos in subscription feed when channels use the
lockupViewModel format in richItemRenderers.
The previous predicate used contains("view") which falsely matched
words like 'reviews', 'preview', 'interview'. Use \bviews?\b to only
match 'view' and 'views' as whole words.
Course playlists videos do not contain the uploader. This leads to an exception
being thrown when trying to extract the uploader values. We can fallback to the
playlist uploader values, as every video is uploaded by the playlist uploader.

Closes: TeamNewPipe/NewPipeExtractor#1425
[YouTube] Fallback to playlist uploader on course playlists
AudricV's review highlighted two issues:
1. Comment incorrectly stated YouTube changed to 1-row everywhere; clarified
   that 2-row format is still used outside channels.
2. Searching ALL rows could match uploader names containing 'views'/'watching'.

Solution:
- Add protected getInfoMetadataRowIndex() returning 1 by default (2-row format)
- Override to return 0 in YoutubeChannelTabExtractor's lockup subclass
   (channel tabs use 1-row format without uploader info)
- Replace findMetadataPart() with findMetadataPartInRow() that only searches
   within the specified info row, avoiding false matches from uploader names
- Update getDateText() and getViewCount() to use the row index
- Update test comments and override getInfoMetadataRowIndex() in 1-row tests
…ates

[YouTube] Fix date/view extraction and add tests for lockupViewModel in channel tabs
@feuerswut feuerswut changed the title merge latest changes from upste merge latest changes from upstream May 26, 2026
@feuerswut
Copy link
Copy Markdown
Author

auto merge on upstream changes. 1 conflict:
grafik
accepted combination because: it contains the sponsorblock code

TODO: test

@feuerswut
Copy link
Copy Markdown
Author

seems to work with the newest app build on my repo

@feuerswut
Copy link
Copy Markdown
Author

ready to merge on my end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.