Jump to content

Plugin: Manage Coming Soon


Recommended Posts

Posted (edited)

image.png.3cd05cf45d592f92e49d109154f0f87c.png

Purpose and Function

  • [Add Movie] To speed up the creation of Coming soon movie placeholders (With Coming Soon Tag), so users can see what is coming soon.
  • [Make Live] To speed up moving placeholder to live state (Library Change / Coming Soon Tag Removal / Maintain Metadata and ID across move)
  • Folder names are normalised to TMDB matches (To help Emby match them correctly)
  • Simple placeholder video included, option to choose your own.
  • Very niche, might just be a me thing.
  • Learning new UI model

Getting Started

  • Register for TMDB API Key and add to config
  • Create Emby API Key and add to config (Plugin uses rest /refresh endpoint to direct immediate refreshes)
  • Specify your library for coming soon placeholders and library for when gone live.
     

Disclaimers

Vibe coded with Claude, backup database before 1st use until tested, use dummy libraries/paths during testing, only limited short term testing on beta server so far. This plugin has file system delete commands targeted at coming soon movies.

Download

0.0.0.3Emby.ManageComingSoon.dll

0.0.0.2Emby.ManageComingSoon.dll

 

Changes

0.0.0.3 Configuration UI  Improvements

 Known Issues


Roadmap

Write TMDB match to NFO to force correct detection

Edited by ginjaninja
Posted

Thanks for your plugin. It would be really useful imo, when the plugin could be connected to Radarr/Sonarr and setup the monitored and not available items as coming soon items in Emby.

  • Agree 1
Posted
57 minutes ago, sh0rty said:

Thanks for your plugin. It would be really useful imo, when the plugin could be connected to Radarr/Sonarr and setup the monitored and not available items as coming soon items in Emby.

Thanks you are very welcome. Yes i had something around this in my mind but never even half formulated (I am not familiar with the tools in this regard). Now ive got an example of how to reach out to Emby and TMDB apis, maybe the next learning point is how to provide a (webhooks?) interface which Radarr/Sonarr could consume and in return consume their interface. I think the job of the plugin would need to be lightweight without too much functionality doing 'just enough' to link something to something else; where these somethings are doing the real work (not least because im learning). If you were interested to formulate an idea id be interested to (learn to) implement it.

  • Like 1
sh0rty
Posted

Radarr API: https://radarr.video/docs/api/
Call:

curl -X GET \
  "http://RADARR:7878/api/v3/movie" \
  -H "X-Api-Key: API_KEY"

Response (shortened):
 

[
  {
    "id": 1,
    "title": "Alien",
    "monitored": true
  },
  {
    "id": 2,
    "title": "Avatar",
    "monitored": false
  }
]

Then you can filter for "monitored": true.

Or you filter for "monitored": true from the beginning using jq with e.g:
 

curl -s \
  -H "X-Api-Key: API_KEY" \
  "http://RADARR:7878/api/v3/movie" |
jq '.[] | select(.monitored == true)'

***********************************************************************************************************************************************************

Sonarr API: https://sonarr.tv/docs/api/#v3/description/introduction

Call:
 

curl -X GET \
  "http://SONARR:8989/api/v3/series" \
  -H "X-Api-Key: API_KEY"

Response:
Same as with Radarr

 

Filter from beginning using jq:
 

curl -s \
  -H "X-Api-Key: API_KEY" \
  "http://SONARR:8989/api/v3/series" |
jq '.[] | select(.monitored == true)'

 

*********************************************************************************************************************
The json Output you get with the API calls gives you TMDB, IMDB, TVDB, TVMAze etc. IDs you can work with to import the monitored items into the Coming Soon Section your plugin creates in Emby.

Example output of a movie:
 

{
  "title": "Blade",
  "originalTitle": "Blade",
  "originalLanguage": {
    "id": 1,
    "name": "English"
  },
  "alternateTitles": [
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "Marvel Studios' Blade",
      "id": 257
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "დანა",
      "id": 258
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "ხმალი",
      "id": 259
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "The Blade",
      "id": 260
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "Asmenys",
      "id": 261
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "Penge",
      "id": 262
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "Блэйд",
      "id": 263
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "Săn Quỷ",
      "id": 264
    },
    {
      "sourceType": "tmdb",
      "movieMetadataId": 13,
      "title": "新刀锋战士",
      "id": 265
    }
  ],
  "secondaryYearSourceId": 0,
  "sortTitle": "blade",
  "sizeOnDisk": 0,
  "status": "announced",
  "overview": "Blade ist sowohl ein Vampir als auch ein Mensch. Seine Mutter wurde von einem Vampir gebissen, als sie mit ihm schwanger war, doch sie starb bei dessen Geburt. Er ist im Gegensatz zu anderen Vampiren resistent gegen Sonnenlicht und kann das Tageslicht unbeschadet betreten. Gleichwohl verfügt er über die gleichen Kräfte und die gleiche Gier nach Blut wie die Vampire. Blade grenzt sich jedoch deutlich von den Vampiren ab, da er die Menschen vor ihnen beschützen will.",
  "images": [
    {
      "coverType": "poster",
      "url": "/MediaCover/19/poster.jpg?lastWrite=639162776331543830",
      "remoteUrl": "https://image.tmdb.org/t/p/original/qctzZ0LmG88k2DGqNMFTUW2wXo2.jpg"
    },
    {
      "coverType": "fanart",
      "url": "/MediaCover/19/fanart.jpg?lastWrite=639162776330983816",
      "remoteUrl": "https://image.tmdb.org/t/p/original/hFtJz4TvoiJJcw2ZOMdhK22aU9P.jpg"
    }
  ],
  "website": "https://www.marvel.com/movies/blade",
  "year": 0,
  "youTubeTrailerId": "",
  "studio": "Marvel Studios",
  "path": "/media/Libraries/MOVIES/Blade () [tmdb-617127]",
  "qualityProfileId": 7,
  "hasFile": false,
  "movieFileId": 0,
  "monitored": true,
  "minimumAvailability": "announced",
  "isAvailable": true,
  "folderName": "/media/Libraries/MOVIES/Blade () [tmdb-617127]",
  "runtime": 0,
  "cleanTitle": "blade",
  "imdbId": "tt10671440",
  "tmdbId": 617127,
  "titleSlug": "617127",
  "rootFolderPath": "/media/Libraries/MOVIES",
  "genres": [
    "Fantasy"
  ],
  "keywords": [
    "anti hero",
    "based on comic",
    "hero",
    "marvel cinematic universe (mcu)",
    "superhero",
    "vampire"
  ],
  "tags": [],
  "added": "2024-11-21T18:17:00Z",
  "ratings": {
    "tmdb": {
      "votes": 0,
      "value": 0,
      "type": "user"
    }
  },
  "popularity": 2.1345,
  "lastSearchTime": "2025-06-04T13:06:18Z",
  "statistics": {
    "movieFileCount": 0,
    "sizeOnDisk": 0,
    "releaseGroups": []
  },
  "id": 19
}


Example output of a TV show:
 

{
  "title": "VisionQuest",
  "alternateTitles": [],
  "sortTitle": "visionquest",
  "status": "upcoming",
  "ended": false,
  "overview": "After the events of \"WandaVision\", the Vision tries to regain his memory and identity.",
  "nextAiring": "2026-10-14T04:00:00Z",
  "network": "Disney+",
  "airTime": "00:00",
  "images": [
    {
      "coverType": "banner",
      "url": "/MediaCover/159/banner.jpg?lastWrite=639166772830478702",
      "remoteUrl": "https://artworks.thetvdb.com/banners/v4/series/426606/banners/6a28c0196e7df.jpg"
    },
    {
      "coverType": "poster",
      "url": "/MediaCover/159/poster.jpg?lastWrite=639162777702699574",
      "remoteUrl": "https://artworks.thetvdb.com/banners/v4/series/426606/posters/68eaa69a07baa.jpg"
    },
    {
      "coverType": "fanart",
      "url": "/MediaCover/159/fanart.jpg?lastWrite=639162777702219562",
      "remoteUrl": "https://artworks.thetvdb.com/banners/v4/series/426606/backgrounds/6a04fabe86187.jpg"
    }
  ],
  "originalLanguage": {
    "id": 1,
    "name": "English"
  },
  "seasons": [
    {
      "seasonNumber": 1,
      "monitored": true,
      "statistics": {
        "nextAiring": "2026-10-14T04:00:00Z",
        "episodeFileCount": 0,
        "episodeCount": 0,
        "totalEpisodeCount": 1,
        "sizeOnDisk": 0,
        "releaseGroups": [],
        "percentOfEpisodes": 0
      }
    }
  ],
  "year": 2026,
  "path": "/media/Libraries/SERIES/VisionQuest (2026) [tvdb-426606]",
  "qualityProfileId": 4,
  "seasonFolder": true,
  "monitored": true,
  "monitorNewItems": "all",
  "useSceneNumbering": false,
  "runtime": 0,
  "tvdbId": 426606,
  "tvRageId": 0,
  "tvMazeId": 64950,
  "tmdbId": 213375,
  "firstAired": "2026-10-14T00:00:00Z",
  "lastAired": "2026-10-14T00:00:00Z",
  "seriesType": "standard",
  "cleanTitle": "visionquest",
  "imdbId": "tt23112594",
  "titleSlug": "visionquest",
  "rootFolderPath": "/media/Libraries/SERIES",
  "genres": [
    "Adventure",
    "Drama",
    "Science Fiction"
  ],
  "tags": [],
  "added": "2026-05-17T21:10:37Z",
  "ratings": {
    "votes": 0,
    "value": 0
  },
  "statistics": {
    "seasonCount": 1,
    "episodeFileCount": 0,
    "episodeCount": 0,
    "totalEpisodeCount": 1,
    "sizeOnDisk": 0,
    "releaseGroups": [],
    "percentOfEpisodes": 0
  },
  "languageProfileId": 1,
  "id": 159
}

 

ginjaninja
Posted

so the plugin would read in the monitored but unfulfilled movies from radarr, understand them as "coming soon" and create a placeholder movie on emby so Users can see the movie is coming soon. And if necessary provide a  webhook to radarr to support deletion (or move) of the coming placeholder movie, when radarr is about to make the real one go live? Or just clean the coming soon movie up on a scheduled task, when radarr stops reporting it as coming soon (because radarr has made it live itself, or its no longer coming soon due to change of mind). have i got the gist?

Posted
3 hours ago, ginjaninja said:

so the plugin would read in the monitored but unfulfilled movies from radarr, understand them as "coming soon" and create a placeholder movie on emby so Users can see the movie is coming soon. And if necessary provide a  webhook to radarr to support deletion (or move) of the coming placeholder movie, when radarr is about to make the real one go live? Or just clean the coming soon movie up on a scheduled task, when radarr stops reporting it as coming soon (because radarr has made it live itself, or its no longer coming soon due to change of mind). have i got the gist?

Correct. I would just clean the coming movie section up and remove an available film from it, perhaps via daily task or a task connected to the library scan. Most users have the Radarr profiles set up in a way, that when e.g. a Radarr item is downloaded (e.g. a Web-DL) it gets still monitored until a Bluray release is available. I would leave any unmonitoring in Radarr or Sonarr to the user.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...