ginjaninja 624 Posted June 25 Posted June 25 (edited) 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 June 25 by ginjaninja
sh0rty 764 Posted June 25 Posted June 25 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. 1
ginjaninja 624 Posted June 25 Author Posted June 25 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. 1
sh0rty 764 Posted June 29 Posted June 29 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 } 1
ginjaninja 624 Posted June 29 Author Posted June 29 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?
sh0rty 764 Posted June 29 Posted June 29 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. 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now