# W3U

`w3u` is a new playlist format that aims to provide more features and be simpler than `m3u`. It is based on the `JSON` format, which makes things easier to edit with a cleaner structure.

These are the fields that we currently support for `w3u` playlists:

## Root fields

| Name     | Type       | Required | Description                                                             |
| -------- | ---------- | -------- | ----------------------------------------------------------------------- |
| contact  | String     | No       | The author's email address                                              |
| epg      | String     | No       | The EPG URL to load and use for this playlist                           |
| groups   | Array      | No       | The list of groups (categories)                                         |
| image    | String     | No       | The image URL of the playlist                                           |
| **name** | **String** | **Yes**  | **The name of the playlist**                                            |
| stations | Array      | No       | The list of media links                                                 |
| telegram | String     | No       | The Telegram contact username, without `@`                              |
| url      | String     | No       | The URL of this playlist. This option allows the app to update the list |

## Group fields

| Name       | Type       | Required | Description                                                                                                                          |
| ---------- | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| groups     | Array      | No       | The list of groups (categories)                                                                                                      |
| image      | String     | No       | The image URL of the group                                                                                                           |
| imageScale | String     | No       | Determines how the image will be displayed. Possible values are:  `fitCenter`, `fitEnd`, `fitStart`, `fitXY`, `center`, `centerCrop` |
| info       | String     | No       | The information to show to the user inside this group                                                                                |
| **name**   | **String** | **Yes**  | **The name of the group**                                                                                                            |
| stations   | Array      | No       | The list of video links                                                                                                              |
| url        | String     | No       | The URL of a remote playlist that will be loaded when opening this group                                                             |

## Station fields

| Name       | Type       | Required | Description                                                                                                                                                      |
| ---------- | ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| audio      | Boolean    | No       | Determines if the station is an audio stream. When no value is specified, the app tries to auto-detect the stream type                                           |
| desktop    | Boolean    | No       | Determines if the app should emulate a desktop web client when loading the URL                                                                                   |
| embed      | Boolean    | No       | Determines if the URL should be opened in an embedded web browser instead of the video player                                                                    |
| epgId      | String     | No       | The EPG ID of this station                                                                                                                                       |
| headers    | Map        | No       | The headers to be sent in HTTP requests. This only affects to requests related with the media playback                                                           |
| host       | Boolean    | No       | Determines if the URL is not a video but a website that contains a video that needs to be fetched. When no value is specified, the app tries to auto-detect this |
| hostParser | String     | No       | Determines the host parser to use. When no value is specified, all available parsers are used. Possible values are: `web`                                        |
| image      | String     | No       | The image URL of the station                                                                                                                                     |
| imageScale | String     | No       | Determines how the image will be displayed. Possible values are:  `fitCenter`, `fitEnd`, `fitStart`, `fitXY`, `center`, `centerCrop`                             |
| isHost     | Boolean    | No       | Alias for `host`                                                                                                                                                 |
| **name**   | **String** | **Yes**  | **The name of the station**                                                                                                                                      |
| referer    | String     | No       | Determines the referrer to send in HTTP requests. This value affects both the media playback and the host parsing                                                |
| **url**    | **String** | **Yes**  | **The URL to be loaded**                                                                                                                                         |
| userAgent  | String     | No       | The user agent to use when loading HTTP URLs                                                                                                                     |
