add-ons / add-ons/plugin.video.vrt.nu
No Seasons/Episodes lists available (API changed again?)
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 125
- Forks
- 27
- Avg merge
- 3h 46m
- Merged PRs (30d)
- 12
Description
Describe the bug
No seasons or episodes available any more when selecting a show
To Reproduce
Open VRTMAX in Kodi
select a random show
Expected behavior
When selecting the show I would expect to see the seasons (or episodes if there is only one season)
Additional context
- Operating system: LibreElec 12.2.1
- Kodi version: 21.3
- Addon version: plugin.video.vrt.nu-2.5.50+matrix.1-recent-1c3ef5c.zip
- Using a VPN: no
- Country you are using the addon from: BE
Log (if available)
2026-04-29 19:10:05.874 T:1890085 warning <general>: [plugin.video.vrt.nu] Access: plugin://plugin.video.vrt.nu/programs/karrewiet
2026-04-29 19:10:05.877 T:1890085 warning <general>: [plugin.video.vrt.nu] Got item from cache '/storage/.kodi/userdata/addon_data/plugin.video.vrt.nu/tokens/vrtnusite_profile_at.tkn'
2026-04-29 19:10:05.879 T:1890085 warning <general>: [plugin.video.vrt.nu] URL post: https://www.vrt.be/vrtnu-api/graphql/v1
2026-04-29 19:10:05.879 T:1890085 warning <general>: [plugin.video.vrt.nu] URL post data: b'{"operationName": "program", "query": "\\n query program(\\n $pageId: ID!,\\n $lazyItemCount: Int = 500,\\n $before: ID\\n $after: ID\\n ) {\\n page(id: $pageId) {\\n ... on EpisodePage {\\n title\\n }\\n ... on ProgramPage {\\n brand\\n program {\\n brand\\n brandLogos {\\n type\\n mono\\n primary\\n }\\n catalogMemberType\\n title\\n description\\n shortDescription\\n subtitle\\n id\\n link\\n permalink\\n objectId\\n programType\\n image {\\n alt\\n templateUrl\\n }\\n posterImage {\\n alt\\n templateUrl\\n }\\n favoriteAction {\\n favorite\\n id\\n title\\n }\\n richDescription {\\n html\\n text\\n }\\n richShortDescription {\\n html\\n text\\n }\\n mostRelevantEpisodeTile {\\n __typename\\n title\\n id\\n tile {\\n __typename\\n ...on EpisodeTile {\\n ...episodeTileFragment\\n }\\n }\\n }\\n navigation {\\n __typename\\n items {\\n __typename\\n title\\n icon\\n action {\\n __typename\\n ... on ShowComponentAction {\\n component {\\n __typename\\n ...on StaticTileList {\\n ...staticTileListFragment\\n }\\n ...on LazyTileList {\\n ...lazyTileListFragment\\n }\\n ...on PaginatedTileList {\\n ...paginatedTileListFragment\\n }\\n }\\n }\\n ... on SubNavigationAction {\\n items {\\n __typename\\n title\\n action {\\n __typename\\n ... on ShowComponentAction {\\n component {\\n __typename\\n ...on StaticTileList {\\n ...staticTileListFragment\\n }\\n ...on LazyTileList {\\n ...lazyTileListFragment\\n }\\n ...on PaginatedTileList {\\n ...paginatedTileListFragment\\n }\\n }\\n }\\n }\\n }\\n }\\n ... on LinkAction {\\n displayLink\\n externalTarget\\n internalTarget\\n link\\n linkTokens {\\n __typename\\n placeholder\\n value\\n }\\n page {\\n ...on EpisodePage {\\n title\\n }\\n __typename\\n }\\n passUserIdentity\\n zone {\\n preferredZone\\n isExclusive\\n __typename\\n }\\n __typename\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n }\\n fragment staticTileListFragment on StaticTileList {\\n __typename\\n componentType\\n objectId\\n listId\\n tileContentType\\n tileVariant\\n items {\\n ...on EpisodeTile {\\n ...episodeTileFragment\\n }\\n }\\n }\\n fragment lazyTileListFragment on LazyTileList {\\n __typename\\n componentType\\n title\\n listId\\n tileContentType\\n tileVariant\\n action {\\n __typename\\n }\\n actionItems {\\n ...actionItemFragment\\n __typename\\n }\\n items {\\n __typename\\n ...on EpisodeTile {\\n ...episodeTileFragment\\n }\\n }\\n paginatedItems(first: $lazyItemCount, after: $after, before: $before) {\\n __typename\\n edges {\\n __typename\\n cursor\\n node {\\n __typename\\n ...on EpisodeTile {\\n ...episodeTileFragment\\n }\\n }\\n }\\n }\\n }\\n fragment paginatedTileListFragment on PaginatedTileList {\\n __typename\\n componentType\\n objectId\\n listId\\n tileContentType\\n tileVariant\\n paginatedItems(first: $lazyItemCount, after: $after, before: $before) {\\n __typename\\n edges {\\n __typename\\n cursor\\n node {\\n __typename\\n ...on EpisodeTile {\\n ...episodeTileFragment\\n }\\n }\\n }\\n }\\n }\\n fragment actionItemFragment on ActionItem {\\n __typename\\n objectId\\n accessibilityLabel\\n active\\n mode\\n title\\n themeOverride\\n action {\\n __typename\\n }\\n icons {\\n __typename\\n }\\n }\\n \\n fragment episodeTileFragment on EpisodeTile {\\n ... on IComponent {\\n ...componentTrackingDataFragment\\n __typename\\n }\\n accessibilityTitle\\n id\\n image {\\n templateUrl\\n }\\n tileType\\n title\\n componentType\\n description\\n available\\n action {\\n ... on LinkAction {\\n link\\n }\\n }\\n chapterStart\\n formattedDuration\\n whatsonId\\n indexMeta {\\n ...metaData\\n }\\n labelMeta {\\n ...metaData\\n }\\n primaryMeta {\\n ...metaData\\n }\\n secondaryMeta {\\n ...metaData\\n }\\n tertiaryMeta {\\n ...metaData\\n }\\n progress {\\n completed\\n progressInSeconds\\n durationInSeconds\\n __typename\\n }\\n status {\\n accessibilityLabel\\n icon {\\n __typename\\n }\\n text {\\n small\\n default\\n __typename\\n }\\n __typename\\n }\\n __typename\\n }\\n fragment metaData on MetaDataItem {\\n longValue\\n shortValue\\n type\\n value\\n label\\n __typename\\n }\\n fragment componentTrackingDataFragment on IComponent {\\n trackingData {\\n data\\n __typename\\n }\\n __typename\\n }\\n\\n ", "variables": {"pageId": "/vrtmax/a-z/karrewiet/"}}'
2026-04-29 19:10:06.166 T:1890085 critical <general>: [plugin.video.vrt.nu] {
"errors": [
{
"message": "Cannot query field \"mostRelevantEpisodeTile\" on type \"Program\".",
"locations": [
{
"line": 52,
"column": 17
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
2026-04-29 19:10:14.208 T:1890085 warning <general>: [plugin.video.vrt.nu] Access: plugin://plugin.video.vrt.nu/channels/ketnet/1734622095303
2026-04-29 19:10:14.212 T:1890085 warning <general>: [plugin.video.vrt.nu] Got item from cache '/storage/.kodi/userdata/addon_data/plugin.video.vrt.nu/tokens/vrtnusite_profile_at.tkn'
2026-04-29 19:10:14.216 T:1890085 warning <general>: [plugin.video.vrt.nu] URL post: https://www.vrt.be/vrtnu-api/graphql/v1
2026-04-29 19:10:14.217 T:1890085 warning <general>: [plugin.video.vrt.nu] URL post data: b'{"operationName": "TileList", "query": "\\n query TileList(\\n $listId: ID!\\n $lazyItemCount: Int = 20\\n $after: ID\\n $before: ID\\n ) {\\n list(listId: $listId) {\\n __typename\\n ... on PaginatedTileList {\\n ...paginatedTileListFragment\\n __typename\\n }\\n ... on StaticTileList {\\n ...staticTileListFragment\\n __typename\\n }\\n }\\n }\\n fragment paginatedTileListFragment on PaginatedTileList {\\n __typename\\n objectId\\n listId\\n tileVariant\\n tileContentType\\n title\\n description\\n paginatedItems(first: $lazyItemCount, after: $after, before: $before) {\\n __typename\\n edges {\\n __typename\\n cursor\\n node {\\n __typename\\n ...tileFragment\\n }\\n }\\n pageInfo {\\n __typename\\n endCursor\\n hasNextPage\\n hasPreviousPage\\n startCursor\\n }\\n }\\n }\\n fragment staticTileListFragment on StaticTileList {\\n __typename\\n objectId\\n listId\\n tileVariant\\n tileContentType\\n title\\n description\\n paginatedItems(first: $lazyItemCount, after: $after, before: $before) {\\n __typename\\n edges {\\n __typename\\n cursor\\n node {\\n __typename\\n ...tileFragment\\n }\\n }\\n pageInfo {\\n __typename\\n endCursor\\n hasNextPage\\n hasPreviousPage\\n startCursor\\n }\\n }\\n }\\n fragment tileFragment on Tile {\\n ... on IIdentifiable {\\n __typename\\n objectId\\n }\\n ... on ITile {\\n title\\n active\\n accessibilityTitle\\n action {\\n __typename\\n ... on LinkAction {\\n internalTarget\\n link\\n internalTarget\\n externalTarget\\n __typename\\n }\\n }\\n actionItems {\\n ...actionItemFragment\\n __typename\\n }\\n image {\\n ...imageFragment\\n __typename\\n }\\n primaryMeta {\\n ...metaFragment\\n __typename\\n }\\n secondaryMeta {\\n ...metaFragment\\n __typename\\n }\\n tertiaryMeta {\\n ...metaFragment\\n __typename\\n }\\n indexMeta {\\n ...metaFragment\\n __typename\\n }\\n statusMeta {\\n ...metaFragment\\n __typename\\n }\\n labelMeta {\\n ...metaFragment\\n __typename\\n }\\n status {\\n accessibilityLabel\\n icon {\\n __typename\\n }\\n text {\\n small\\n default\\n __typename\\n }\\n __typename\\n }\\n componentId\\n __typename\\n }\\n ... on EpisodeTile {\\n ...episodeTileFragment\\n __typename\\n }\\n ... on ProgramTile {\\n ...programTileFragment\\n }\\n __typename\\n }\\n fragment actionItemFragment on ActionItem {\\n __typename\\n objectId\\n accessibilityLabel\\n active\\n mode\\n title\\n themeOverride\\n action {\\n ...actionFragment\\n __typename\\n }\\n icons {\\n ...iconFragment\\n __typename\\n }\\n }\\n fragment actionFragment on Action {\\n __typename\\n ... on FavoriteAction {\\n id\\n favorite\\n title\\n __typename\\n }\\n ... on ListDeleteAction {\\n listName\\n id\\n listId\\n title\\n __typename\\n }\\n ... on ListTileDeletedAction {\\n listName\\n id\\n listId\\n __typename\\n }\\n ... on LinkAction {\\n internalTarget\\n link\\n internalTarget\\n externalTarget\\n passUserIdentity\\n zone {\\n preferredZone\\n isExclusive\\n __typename\\n }\\n linkTokens {\\n __typename\\n placeholder\\n value\\n }\\n __typename\\n }\\n ... on ClientDrivenAction {\\n __typename\\n clientDrivenActionType\\n }\\n ... on ShareAction {\\n title\\n url\\n __typename\\n }\\n ... on SwitchTabAction {\\n referencedTabId\\n link\\n __typename\\n }\\n ... on FinishAction {\\n id\\n __typename\\n }\\n }\\n fragment iconFragment on Icon {\\n __typename\\n accessibilityLabel\\n position\\n type\\n ... on DesignSystemIcon {\\n value {\\n __typename\\n color\\n name\\n }\\n activeValue {\\n __typename\\n color\\n name\\n }\\n __typename\\n }\\n ... on ImageIcon {\\n value {\\n __typename\\n srcSet {\\n src\\n format\\n __typename\\n }\\n }\\n activeValue {\\n __typename\\n srcSet {\\n src\\n format\\n __typename\\n }\\n }\\n __typename\\n }\\n }\\n fragment imageFragment on Image {\\n __typename\\n objectId\\n alt\\n focusPoint {\\n x\\n y\\n __typename\\n }\\n templateUrl\\n }\\n fragment metaFragment on MetaDataItem {\\n __typename\\n type\\n value\\n shortValue\\n longValue\\n }\\n \\n fragment programTileFragment on ProgramTile {\\n __typename\\n objectId\\n id\\n link\\n tileType\\n image {\\n alt\\n templateUrl\\n }\\n title\\n program {\\n title\\n id\\n link\\n programType\\n description\\n shortDescription\\n subtitle\\n announcementType\\n announcementValue\\n whatsonId\\n image {\\n alt\\n templateUrl\\n }\\n posterImage {\\n alt\\n templateUrl\\n }\\n favoriteAction {\\n favorite\\n id\\n title\\n }\\n }\\n }\\n\\n \\n fragment episodeTileFragment on EpisodeTile {\\n ... on IComponent {\\n ...componentTrackingDataFragment\\n __typename\\n }\\n accessibilityTitle\\n id\\n image {\\n templateUrl\\n }\\n tileType\\n title\\n componentType\\n description\\n available\\n action {\\n ... on LinkAction {\\n link\\n }\\n }\\n chapterStart\\n formattedDuration\\n whatsonId\\n indexMeta {\\n ...metaData\\n }\\n labelMeta {\\n ...metaData\\n }\\n primaryMeta {\\n ...metaData\\n }\\n secondaryMeta {\\n ...metaData\\n }\\n tertiaryMeta {\\n ...metaData\\n }\\n progress {\\n completed\\n progressInSeconds\\n durationInSeconds\\n __typename\\n }\\n status {\\n accessibilityLabel\\n icon {\\n __typename\\n }\\n text {\\n small\\n default\\n __typename\\n }\\n __typename\\n }\\n __typename\\n }\\n fragment metaData on MetaDataItem {\\n longValue\\n shortValue\\n type\\n value\\n label\\n __typename\\n }\\n fragment componentTrackingDataFragment on IComponent {\\n trackingData {\\n data\\n __typename\\n }\\n __typename\\n }\\n\\n ", "variables": {"listId": "$byUxNHx7ImZhY2V0cyI6IFt7Im5hbWUiOiAiYnJhbmQiLCAidmFsdWVzIjogWyJrZXRuZXQiXX0sIHsibmFtZSI6ICJlbnRpdHl0eXBlIiwgInZhbHVlcyI6IFsidmlkZW8tcHJvZ3JhbSJdfV0sICJyZXN1bHRUeXBlIjogIndhdGNoIn18d2F0Y2gl", "after": "1734622095303", "lazyItemCount": 50}}'
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Locate the addon code that builds the program GraphQL query and search for mostRelevantEpisodeTile, then reproduce the request against the VRT MAX GraphQL endpoint. Done means show pages load their seasons or episodes again without the reported GraphQL validation error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- graphql, python
- Domain
- api, backend-api-design
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100