Skip to content

Add IPTV VOD browsing as a Library tab - #730

Open
test01203 wants to merge 3 commits into
ProdigyV21:mainfrom
test01203:feature/iptv-vod-browser
Open

test01203 wants to merge 3 commits into
ProdigyV21:mainfrom
test01203:feature/iptv-vod-browser

Conversation

@test01203

@test01203 test01203 commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

Summary

IPTV subscriptions carry a VOD catalogue — often thousands of movies and series — that ARVIO could reach only indirectly: an IPTV copy shows up as a source on a Details page you already found some other way. There was no way to browse what the provider actually has.

This adds that catalogue to Library, as a tab, next to the home servers. The TV screen is untouched and stays live-only.

Reworked from the first version of this PR, which added a VOD destination to the top bar. Per @Himanth-reddy and @ProdigyV21 that is not where it belongs: the data layer, caching and TMDB matching are kept, the browsing UI moved into Library, and the top-bar entry is gone entirely.

What the tab does

  • Sources rail — "All", "Recently added", then the provider's own categories. Empty categories are hidden. On mobile this is the existing "Choose library" picker; on TV it is the same side rail the home servers use.
  • Filters → Type picks Movies or Series. The provider keeps those as two separate catalogues, so this chooses which one to read rather than filtering one list; there is no combined option, and sorting is left out because the order is the provider's own.
  • Search uses the Library's existing search box.
  • Opening a title: one the provider tagged with a TMDB id opens ARVIO's normal Details page, where the IPTV copy appears as a source next to the addons. An untagged one is matched on TMDB by cleaned name and year. A movie that still cannot be matched plays straight from the provider; anything else reports which title could not be opened instead of failing silently.
  • The tab only exists when a playlist can actually serve VOD, and it disappears again if that playlist is removed.
  • The catalogue is read when the tab is first opened, not when Library is. Opening Library costs one cheap config read.

Data layer

IptvRepository.getVodBrowseCatalog(series) reads the provider's movie or series list through the same memory and disk caches that already back IPTV VOD source matching, so the second visit is instant. Three browse-only fields were added to the Xtream models (stream_icon/cover, rating, added/last_modified) and the disk cache filenames bumped to _v2 so an older cache without them is re-read once.

Titles carry provider noise — EN - , |HE|, [4K], 1080p, a trailing year — so cleanIptvTitle strips it for both the TMDB lookup and the card label.

A title with no TMDB match plays under a negative synthetic id, and the player skips history and scrobbling for ids <= 0 so an unmatched stream cannot write junk into Continue Watching.

Test plan

  • ./gradlew :app:compilePlayDebugKotlin
  • ./gradlew :app:testPlayDebugUnitTest
  • CleanIptvTitleTest covers the provider prefixes, quality tags and trailing years.

@github-actions github-actions Bot added the area: android Changes to the Android app or Gradle build label Sep 19, 2026
@Himanth-reddy

Copy link
Copy Markdown
Collaborator

I think this would fit ARVIO better if we implement the VOD browsing within the existing Library instead of adding a separate VOD section next to TV.

I’d keep the TV section unchanged and use it purely for live IPTV. The VOD catalogue from IPTV can be exposed as another source/filter inside Library, since Movies, Series etc. already conceptually belong there.

So I’d suggest keeping the underlying IPTV VOD catalogue/caching/matching work from this PR, but moving the browsing UI into Library rather than introducing a separate VOD destination.

@ProdigyV21

Copy link
Copy Markdown
Owner

Like Himanth said, adding something in topbar is not in Arvio's vission. Great Pr tho, we can use this.
Instead add a tab in Library page like it does for homeservers would fit this better. Make sure to fully test it on mobile and tv. Dm me about this and I can give you premium so you can also test for webapp.

Thanks!

The-cpu-max and others added 2 commits October 6, 2026 19:12
IPTV VOD was only used behind the scenes, as an extra source when a TMDB
title was opened. There was no way to browse the provider's own movie and
series catalogue.

- New "VOD" top-bar entry (and mobile bottom-bar tab) next to TV, opening an
  IPTV VOD screen: Movies / Series tabs, the provider's own categories with
  counts, "Recently added", search, and a poster grid.
- Selecting a title opens ARVIO's normal Details page when the provider tags
  a TMDB id, otherwise the cleaned name + year is matched on TMDB. Movies that
  still cannot be matched play directly from the provider.
- Xtream VOD/series wire models now keep artwork, rating and added date;
  disk caches are versioned (v2) so they are refetched once with artwork.
- The player skips scrobbling and watch history for synthetic ids (<= 0)
  used by the direct-play fallback.
- English and Hebrew strings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review feedback on ProdigyV21#730: a VOD destination in the top bar is not where
this belongs. The TV screen goes back to being live-only and the top-bar
entry is gone; the catalogue, its caches and the TMDB matching stay and
the browsing UI moves into Library, next to the home servers.

The tab reuses what is already there: the sources rail lists "All",
"Recently added" and the provider's own categories (empty ones hidden),
the Library's own search box searches it, and Filters > Type chooses
between the provider's movie and series catalogues — two separate lists
on its side, so there is no combined option and no sort, the order being
the provider's own.

The tab only appears when a playlist can actually serve VOD, and goes
away again when that playlist does. The catalogue is read the first time
the tab is opened rather than when Library is, so opening Library still
costs only a config read.

Deletes the standalone VOD screen and the strings that belonged to it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@test01203
test01203 force-pushed the feature/iptv-vod-browser branch from 447b3eb to c2ee8cd Compare October 6, 2026 16:47
@test01203 test01203 changed the title Add an IPTV VOD browser next to TV in the top bar Add IPTV VOD browsing as a Library tab Oct 6, 2026
The catalogue read starts from an effect, so the first frame of the tab
rendered an empty grid as "No titles found" before anything had been
asked for; it now says it is loading until the first read finishes.

Opening a title the provider did not tag with a TMDB id costs a lookup
before anything happens on screen, so that wait is shown too, using the
state the view model was already tracking for it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ProdigyV21

Copy link
Copy Markdown
Owner

Do you have screenshots of it and tested it? @test01203

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

Labels

area: android Changes to the Android app or Gradle build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants