Skip to main content

Series (TV shows with episodes)

Excellent! Your add-on now provides movies with full functionality. But what about TV shows? Let's expand your add-on to support series - content with multiple episodes organized into seasons.

The key difference between movies and series is that series have multiple videos (episodes) instead of just one. Each episode is a separate video that users can watch individually.

Understanding series structure

Movies vs Series:

  • Movies: One video per item
  • Series: Multiple episodes organized in seasons

Series organization:

  • Series → Seasons → Episodes
  • Each episode has its own stream
  • Users can browse episodes and watch them individually

Updating your manifest

To support series, you need to add "series" to your types and create a series catalog:

{
"id": "my.first.emet.addon",
"version": "1.0.0",
"name": "Hello, World",
"description": "My first EMET Surf add-on",
"logo": "https://example.com/logo-256.png",
"resources": [
"catalog",
{
"name": "meta",
"types": ["movie", "series"],
"idPrefixes": ["hiwrld_"]
},
"stream"
],
"types": ["movie", "series"],
"catalogs": [
{"id": "movieCatalog", "type": "movie", "name": "Hello, Movies"},
{"id": "seriesCatalog", "type": "series", "name": "Hello, TV Shows"}
]
}

What changed:

  • Added "series" to both types arrays
  • Added a new series catalog to the catalogs array

Creating the series catalog

First, create the directory structure for series:

On Windows:

mkdir catalog\series

On Mac/Linux:

mkdir -p catalog/series

Now create catalog/series/seriesCatalog.json:

{
"metas": [
{
"type": "series",
"id": "tt1748166",
"name": "Pioneer One",
"poster": "https://images.metahub.space/poster/medium/tt1748166/img",
"genres": ["Drama", "Sci-Fi"]
},
{
"type": "series",
"id": "hiwrld_tt0147753",
"name": "Captain Z-Ro",
"poster": "https://www.captain-z-ro.com/images/FLYER-PAGE-1_250.gif",
"genres": ["Sci-Fi", "Children", "Educational"]
}
]
}

Note: The catalog structure is identical to movies - only the type field differs.

Providing series metadata

For the first series (tt1748166), EMET Surf will automatically provide metadata since it has a valid IMDb ID.

For the second series (hiwrld_tt0147753), you need to provide custom metadata. Create the directory:

On Windows:

mkdir meta\series

On Mac/Linux:

mkdir -p meta/series

Create meta/series/hiwrld_tt0147753.json:

{
"meta": {
"id": "hiwrld_tt0147753",
"type": "series",
"name": "Captain Z-Ro",
"description": "From his secret laboratory, Captain Z-Ro and his associates use their time machine, the ZX-99, to learn from the past and plan for the future.",
"releaseInfo": "1955-1956",
"logo": "https://fanart.tv/fanart/tv/70358/hdtvlogo/captain-z-ro-530995d5e979d.png",
"imdbRating": 6.9,
"poster": "https://www.captain-z-ro.com/images/FLYER-PAGE-1_250.gif",
"background": "https://www.captain-z-ro.com/images/Captain-Z--R0_500.jpg",
"genres": ["Sci-Fi", "Children", "Educational"],
"runtime": "15 mins.",
"videos": [
{
"season": 1,
"episode": 1,
"id": "hiwrld_tt0147753:1:1",
"title": "Christopher Columbus",
"released": "1955-12-18"
},
{
"season": 1,
"episode": 2,
"id": "hiwrld_tt0147753:1:2",
"title": "Daniel Boone",
"released": "1955-12-25"
}
]
}
}

Key differences from movie metadata:

  • videos array: Lists all episodes with their details
  • Episode structure: season, episode, id, title, released
  • Episode IDs: Use format seriesId:season:episode

Adding episode streams

Each episode needs its own stream file. Create the directory:

On Windows:

mkdir stream\series

On Mac/Linux:

mkdir -p stream/series

Episode 1 stream

Create stream/series/hiwrld_tt0147753:1:1.json:

{
"streams": [
{
"title": "Episode 1 - HD Quality",
"url": "https://example.com/captain-z-ro-episode-1.mp4"
}
]
}

Episode 2 stream

Create stream/series/hiwrld_tt0147753:1:2.json:

{
"streams": [
{
"title": "Episode 2 - HD Quality",
"url": "https://example.com/captain-z-ro-episode-2.mp4"
}
]
}

Important: The stream file names must match the episode IDs from the metadata (hiwrld_tt0147753:1:1, hiwrld_tt0147753:1:2).

Understanding the series structure

Your file structure should now look like:

my-emet-addon/
├── manifest.json
├── catalog/
│ ├── movie/
│ │ └── movieCatalog.json
│ └── series/
│ └── seriesCatalog.json
├── meta/
│ ├── movie/
│ │ └── hiwrld_jellyfish.json
│ └── series/
│ └── hiwrld_tt0147753.json
└── stream/
├── movie/
│ ├── tt0032138.json
│ ├── tt0017136.json
│ └── hiwrld_jellyfish.json
└── series/
├── hiwrld_tt0147753:1:1.json
└── hiwrld_tt0147753:1:2.json

Testing your series

  1. Update your manifest with series support
  2. Create the series catalog with TV shows
  3. Add series metadata with episode information
  4. Create episode streams for each episode
  5. Reinstall your add-on in EMET Surf
  6. Browse the series catalog - you should see TV shows!
  7. Click on a series - you should see episodes listed
  8. Click on an episode - you should see stream options

Advanced series features

Multiple seasons

{
"videos": [
{"season": 1, "episode": 1, "id": "seriesId:1:1", "title": "S01E01"},
{"season": 1, "episode": 2, "id": "seriesId:1:2", "title": "S01E02"},
{"season": 2, "episode": 1, "id": "seriesId:2:1", "title": "S02E01"}
]
}

Episode metadata

Each episode can have additional information:

  • released: When the episode aired
  • overview: Episode description
  • thumbnail: Episode-specific image

What you've accomplished

  • Added series support to your add-on
  • Created series catalogs with TV shows
  • Provided detailed series metadata with episodes
  • Added individual episode streams
  • Understood the series vs movie structure
  • Learned about episode ID formatting

What's next?

Your add-on now supports both movies and TV shows! In the next step, we'll add dynamic features like search, filtering, and pagination to make your content more discoverable.

Summary

  • Series have multiple episodes organized in seasons
  • Add "series" to your manifest types
  • Create series catalogs and metadata
  • Include videos array with episode information
  • Use episode IDs in format seriesId:season:episode
  • Create individual stream files for each episode
  • Your add-on now supports TV shows with multiple episodes!