API: Content - add-ons/plugin.video.viervijfzes GitHub Wiki

Content API

API Terminology:

  • Program: A tv show
  • Page: An episode of a tv show
  • Playlist: A season, or another collection of videos
  • Video: The video stream of an episode

Programs

A list of programs can be scraped of the homepage of the channel from a.program-overview__link. We can find a title and a path.

Examples:

Program info

Site API

The path of the program can be used to generate a URL that we can fetch. On that page, we can extract a JSON from a div with an attribute data-hero. The same JSON is available trough an API, but we need to know the programUuid then.

  • GET https://www.vier.be/{path}
  • GET https://www.vier.be/api/program/{programUuid}
{
  "data": {
    "id": "66c7e887-b468-4e2b-b0f1-534ffc51c327",
    "title": "Auwch_",
    "subtitle": "",
    "description": "Auwch_ draait ook in dit 2de seizoen rond alledaagse pijnlijke en g\u00eanante situaties waarin Ben Segers en Axel Daeseleire voortdurend verzeild geraken. Met de gekende ongemakkelijke stiltes tot gevolg\u2026",
    "label": "",
    "link": "/auwch",
    "images": {
      "hero": "https://images.viervijfzes.be/www.vier.be/production/meta/tnwallpaper3840x2160auwchs3-q5hc5b.jpg?auto=format&crop=edges&dpr=2&fit=crop&h=780&ixlib=php-1.1.0&q=95&w=1440&s=6424ebacd202c98c36e1f93f9e04896a",
      "mobile": "https://images.viervijfzes.be/www.vier.be/production/2020-02/auwchzp-q5hc5w.jpg?auto=format&crop=edges&dpr=2&fit=crop&h=530&ixlib=php-1.1.0&q=95&w=375&s=789a0652a41fea77ee7e59554de76a3c",
      "poster": "https://images.viervijfzes.be/www.vier.be/production/2020-02/auwchmp-q5hc5r.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=38200a4598b02fcf3fb28db0ffac92a6",
      "teaser": "https://images.viervijfzes.be/www.vier.be/production/meta/tnwallpaper3840x2160auwchs3-q5hc5b.jpg?auto=format&fit=crop&h=452&ixlib=php-1.1.0&q=85&w=682&s=48ad79e81dd385a7108dede9365a5208"
    },
    "header": {
      "title": "Trailer nieuw seizoen",
      "video": []
    },
    "pageInfo": {
      "site": "vier",
      "url": "https://www.vier.be/auwch",
      "nodeId": "365",
      "title": "Auwch_",
      "description": "Auwch_ draait ook in dit 2de seizoen rond alledaagse pijnlijke en g\u00eanante situaties waarin Ben Segers en Axel Daeseleire voortdurend verzeild geraken. Met de gekende ongemakkelijke stiltes tot gevolg\u2026",
      "type": "program",
      "program": "Auwch_",
      "programId": "365",
      "programUuid": "66c7e887-b468-4e2b-b0f1-534ffc51c327",
      "programKey": "auwch",
      "tags": [
        "Auwch_"
      ],
      "publishDate": 1452784345,
      "unpublishDate": 0,
      "author": "[email protected]",
      "notificationsScore": 0
    },
    "playlists": [
      {
        "episodes": [
          {
            "autoplay": false,
            "cimTag": "vid.tvi.ep.vod.free",
            "createdDate": 1584045900,
            "description": "<p>De foemp gaat trouwen met Livia. Axel en Ben kunnen natuurlijk niet ontbreken op zijn vrijgezellenfeestje, ook al is dat dik tegen de zin van Axel.</p>\r\n",
            "duration": 1501,
            "embedCta": null,
            "enablePreroll": true,
            "episodeNumber": 5,
            "episodeTitle": "S3 - Aflevering 5",
            "hasProductPlacement": true,
            "image": "https://images.viervijfzes.be/www.vier.be/production/meta/auwch-y03-e05-f0269534mp400072208still004-q72m4w.jpg?auto=format&fit=max&h=720&ixlib=php-1.1.0&q=65&w=1280&s=380f5f672e083e32082f6ed4b081526d",
            "isProtected": true,
            "isSeekable": false,
            "isStreaming": false,
            "link": "/video/auwch/auwch-s3/auwch-s3-aflevering-5",
            "midrollOffsets": [
              808
            ],
            "pageInfo": {
              "site": "vier",
              "url": "https://www.vier.be/video/auwch/auwch-s3/auwch-s3-aflevering-5",
              "nodeId": "30723",
              "title": "Auwch_ - S3 - Aflevering 5",
              "description": "De foemp gaat trouwen met Livia. Axel en Ben kunnen natuurlijk niet ontbreken op zijn vrijgezellenfeestje, ook al is dat dik tegen de zin van Axel.",
              "type": "video-long_form",
              "program": "Auwch_",
              "programId": "365",
              "programUuid": "66c7e887-b468-4e2b-b0f1-534ffc51c327",
              "programKey": "auwch",
              "tags": [
                "Auwch_",
                "Volledige Aflevering"
              ],
              "publishDate": 1584045900,
              "unpublishDate": 1672605900,
              "author": "[email protected]",
              "notificationsScore": 17
            },
            "pageUuid": "1abd0018-ccc5-4635-871c-fd3082639919",
            "parentalRating": "12+",
            "path": "",
            "program": {
              "title": "Auwch_",
              "poster": "https://images.viervijfzes.be/www.vier.be/production/2020-02/auwchmp-q5hc5r.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=38200a4598b02fcf3fb28db0ffac92a6"
            },
            "seasonNumber": 3,
            "seekableFrom": 1584047401,
            "title": "Auwch_ - S3 - Aflevering 5",
            "type": "long_form",
            "unpublishDate": 1672605900,
            "videoUuid": "b73bfbba-11aa-4a01-a614-066a1251e3a2",
            "whatsonId": "10137607007678527"
          },
          # ... (more episodes)
        ],
        "id": "42a6f9fc-a451-44f3-9b9d-b9a38f1bebe8",
        "link": "/video/auwch/auwch-s3",
        "pageInfo": {
          "site": "vier",
          "url": "https://www.vier.be/video/auwch/auwch-s3",
          "nodeId": "30207",
          "title": "Auwch_ - Seizoen 3",
          "description": "Auwch_ draait ook in het 3e seizoen rond alledaagse pijnlijke en g\u00eanante situaties waarin Ben Segers en Axel Daeseleire voortdurend verzeild geraken. Met de gekende ongemakkelijke stiltes tot gevolg\u2026",
          "type": "playlist",
          "program": "Auwch_",
          "programId": "365",
          "programUuid": "66c7e887-b468-4e2b-b0f1-534ffc51c327",
          "programKey": "auwch",
          "tags": [],
          "publishDate": 1580728083,
          "unpublishDate": 0,
          "author": "[email protected]",
          "notificationsScore": 0
        },
        "title": "Seizoen 3"
      },
      # ... (more seasons)
    ],
    "social": {
      "facebook": "https://www.facebook.com/Auwch-703879279714068/?fref=ts",
      "hashtag": "auwch",
      "instagram": "https://instagram.com/opVIER",
      "twitter": "https://twitter.com/@opVIER"
    }
  }
}

Examples:

Backend API

When we know the programUuid, we can also use the backend API to fetch some details. It contains less data though.

  • GET https://api.viervijfzes.be/content/{programUuid} (authenticated)
{
    "image": {
        "S": "https://images.viervijfzes.be/www.vier.be/production/meta/tnwallpaper3840x2160auwchs3-q5hc5b.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=c78feafe09676e4eace0fbd3065551b2"
    },
    "playlists": {
        "M": {
            "42a6f9fc-a451-44f3-9b9d-b9a38f1bebe8": {
                "M": {
                    "season": {
                        "N": "3"
                    },
                    "last": {
                        "M": {
                            "duration": {
                                "N": "1618"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/auwch-y03-e06-f0269535mp400143505still002-q7fpnb.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=e92aba74bc6498caebbc07bfe6d0ebfb"
                            },
                            "uuid": {
                                "S": "8625f38c-97c0-4cd0-a216-cdeb18a128ab"
                            },
                            "url": {
                                "S": "/video/auwch/auwch-s3/auwch-s3-aflevering-6"
                            }
                        }
                    },
                    "uuid": {
                        "S": "42a6f9fc-a451-44f3-9b9d-b9a38f1bebe8"
                    },
                    "url": {
                        "S": "/video/auwch/auwch-s3"
                    },
                    "first": {
                        "M": {
                            "duration": {
                                "N": "1616"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/vlcsnap-2020-02-13-10h09m53s409-q5mzh1.png?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=2e47562baeaf78ebec6e7a9f41e57fc8"
                            },
                            "uuid": {
                                "S": "5e9ef01e-70dd-436d-85ad-83fa0adbfb94"
                            },
                            "url": {
                                "S": "/video/auwch/auwch-s3/auwch-s3-aflevering-1"
                            }
                        }
                    }
                }
            },
            "76f042d1-1cc1-46f6-9b39-61763c89330c": {
                "M": {
                    "season": {
                        "N": "1"
                    },
                    "last": {
                        "M": {
                            "duration": {
                                "N": "0"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/afl10-q0fwl4.png?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=842124e6bdd60ac4c952a8bf3dfac9cf"
                            },
                            "uuid": {
                                "S": "11b729b0-783b-49c9-85d6-c6ea361802a2"
                            },
                            "url": {
                                "S": "/video/auwch/auwch-seizoen-1/auwch-s1-aflevering-10"
                            }
                        }
                    },
                    "uuid": {
                        "S": "76f042d1-1cc1-46f6-9b39-61763c89330c"
                    },
                    "url": {
                        "S": "/video/auwch/auwch-seizoen-1"
                    },
                    "first": {
                        "M": {
                            "duration": {
                                "N": "0"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/afl1-q0fvws.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=2dd61f816b4a36ce72fdee2abdd7fb70"
                            },
                            "uuid": {
                                "S": "1843a82f-774b-4dff-bc0c-33f97e203053"
                            },
                            "url": {
                                "S": "/video/auwch/auwch-seizoen-1/auwch-s1-aflevering-1"
                            }
                        }
                    }
                }
            },
            "353ba363-84f8-4225-ba85-566756b210ef": {
                "M": {
                    "season": {
                        "N": "2"
                    },
                    "last": {
                        "M": {
                            "duration": {
                                "N": "1610"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/koen-os0ux1-pk192f.png?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=8355ea5c19095edd18dec8a892e684f4"
                            },
                            "uuid": {
                                "S": "74446180-8206-45ae-914c-1c1363e9a1c2"
                            },
                            "url": {
                                "S": "/video/auwch/seizoen-2/auwch-s2-auwch-2-10"
                            }
                        }
                    },
                    "uuid": {
                        "S": "353ba363-84f8-4225-ba85-566756b210ef"
                    },
                    "url": {
                        "S": "/video/auwch/seizoen-2"
                    },
                    "first": {
                        "M": {
                            "duration": {
                                "N": "1514"
                            },
                            "image": {
                                "S": "https://images.viervijfzes.be/www.vier.be/production/meta/afl1auwch-os0the-pk14ya.jpg?auto=format&fit=crop&h=590&ixlib=php-1.1.0&q=95&w=410&s=f4d7b660b76c340491c50befa98407f1"
                            },
                            "uuid": {
                                "S": "043c4c1a-8118-4e67-b443-86a6e241ecb7"
                            },
                            "url": {
                                "S": "/video/auwch/seizoen-2/auwch-s2-auwch-2-1"
                            }
                        }
                    }
                }
            }
        }
    },
    "description": {
        "S": "Auwch_ draait ook in dit 2de seizoen rond alledaagse pijnlijke en gênante situaties waarin Ben Segers en Axel Daeseleire voortdurend verzeild geraken. Met de gekende ongemakkelijke stiltes tot gevolg…"
    },
    "label": {
        "S": "Auwch_"
    },
    "category": {
        "M": {
            "id": {
                "S": "51821"
            },
            "label": {
                "S": "Serie Komedie"
            }
        }
    },
    "uuid": {
        "S": "66c7e887-b468-4e2b-b0f1-534ffc51c327"
    },
    "url": {
        "S": "/auwch"
    }
}

Examples:

Page info

From the Program info, we can get a list of Episodes. Each episode has a pageUuid. The same information already exists in the Program info.

  • GET https://www.vier.be/api/video/{pageUuid}
{
  "autoplay": false,
  "cimTag": "vid.tvi.ep.vod.free",
  "createdDate": 1584045900,
  "description": "\u003Cp\u003EDe foemp gaat trouwen met Livia. Axel en Ben kunnen natuurlijk niet ontbreken op zijn vrijgezellenfeestje, ook al is dat dik tegen de zin van Axel.\u003C\/p\u003E\r\n",
  "duration": 1501,
  "embedCta": null,
  "enablePreroll": true,
  "episodeNumber": 5,
  "episodeTitle": "S3 - Aflevering 5",
  "hasProductPlacement": true,
  "image": "https:\/\/images.viervijfzes.be\/www.vier.be\/production\/meta\/auwch-y03-e05-f0269534mp400072208still004-q72m4w.jpg?auto=format\u0026fit=max\u0026h=720\u0026ixlib=php-1.1.0\u0026q=65\u0026w=1280\u0026s=380f5f672e083e32082f6ed4b081526d",
  "isProtected": true,
  "isSeekable": false,
  "isStreaming": false,
  "link": "\/video\/auwch\/auwch-s3\/auwch-s3-aflevering-5",
  "midrollOffsets": [
    808
  ],
  "pageInfo": {
    "site": "vier",
    "url": "https:\/\/www.vier.be\/video\/auwch\/auwch-s3\/auwch-s3-aflevering-5",
    "nodeId": "30723",
    "title": "Auwch_ - S3 - Aflevering 5",
    "description": "De foemp gaat trouwen met Livia. Axel en Ben kunnen natuurlijk niet ontbreken op zijn vrijgezellenfeestje, ook al is dat dik tegen de zin van Axel.",
    "type": "video-long_form",
    "program": "Auwch_",
    "programId": "365",
    "programUuid": "66c7e887-b468-4e2b-b0f1-534ffc51c327",
    "programKey": "auwch",
    "tags": [
      "Auwch_",
      "Volledige Aflevering"
    ],
    "publishDate": 1584045900,
    "unpublishDate": 1672605900,
    "author": "[email protected]",
    "notificationsScore": 17
  },
  "pageUuid": "1abd0018-ccc5-4635-871c-fd3082639919",
  "parentalRating": "12+",
  "path": "",
  "program": {
    "title": "Auwch_",
    "poster": "https:\/\/images.viervijfzes.be\/www.vier.be\/production\/2020-02\/auwchmp-q5hc5r.jpg?auto=format\u0026fit=crop\u0026h=590\u0026ixlib=php-1.1.0\u0026q=95\u0026w=410\u0026s=38200a4598b02fcf3fb28db0ffac92a6"
  },
  "seasonNumber": 3,
  "seekableFrom": 1584047401,
  "title": "Auwch_ - S3 - Aflevering 5",
  "type": "long_form",
  "unpublishDate": 1672605900,
  "videoUuid": "b73bfbba-11aa-4a01-a614-066a1251e3a2",
  "whatsonId": "10137607007678527"
}

Example:

Video info

To get the actual video stream, we need the videoUuid and make the same backend call as the Program info. This videoUuid is available in the Page info.

  • https://api.viervijfzes.be/content/{videoUuid} (authenticated)
{
    "video": {
        "S": "https://stream1-vod.cdn1.sbs.prd.telenet-ops.be/geo/AUWCH_/S3/volledigeafleveringen/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/AUWCH__3_5_F0269534/AUWCH__3_5_F0269534.m3u8"
    }
}

Example:


Other endpoints

[
  {
    "nid": 30655,
    "notification_created": 1583784914,
    "site": "vier",
    "created": 1583784846,
    "id": "cc2f225f-873b-4b5e-b02b-dc9ef5ecc390",
    "image": "https://images.viervijfzes.be/www.vier.be/production/meta/f0271354-otmxf10220618still004-q6s0di.jpg?auto=format&fit=crop&h=60&ixlib=php-1.1.0&q=90&w=60&s=8722dc9e3db66c278633717c730e9ec7",
    "label": null,
    "program": "6f8eae82-4508-41e9-81ec-8f2e3dcc7fec",
    "program_title": "Topdokters",
    "program_category": "Human Interest",
    "score": 7,
    "title": "Dr. Ombelet is een dierenliefhebber “Ontsnapte beestjes belandden op autostrade\"",
    "type": "video",
    "url": "https://www.vier.be/video/topdokters/dr-ombelet-is-een-dierenliefhebber-ontsnapte-beestjes-belandden-op-autostrade",
    "video_type": "short_form",
    "video_uuid": "55ff7360-cd13-4eb4-ac72-e5cebc10d4b1",
    "read": false,
    "seen": false
  },
  {
    "nid": 30663,
    "notification_created": 1583782514,
    "site": "vier",
    "created": 1583782500,
    "id": "08ec347b-0247-4285-8670-c569b57a434a",
    "image": "https://images.viervijfzes.be/www.vier.be/production/meta/tdafl07gradev1mov00400720still015-q6x369.jpg?auto=format&fit=crop&h=60&ixlib=php-1.1.0&q=90&w=60&s=4da466058804e163920b1c10eb4af401",
    "label": null,
    "program": "6f8eae82-4508-41e9-81ec-8f2e3dcc7fec",
    "program_title": "Topdokters",
    "program_category": "Human Interest",
    "score": 17,
    "title": "Topdokters - S7 - Aflevering 7",
    "type": "video",
    "url": "https://www.vier.be/video/topdokters/topdokters-s7/topdokters-s7-aflevering-7",
    "video_type": "long_form",
    "video_uuid": "51ef9e4c-9b1f-47aa-adb7-3aa5c7155882",
    "read": false,
    "seen": false
  }
  # ...
]