add-ons / add-ons/plugin.video.vrt.nu

No Seasons/Episodes lists available (API changed again?)

Open
#1,330 26 comments 1 reaction 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.