Remove movie once the movie folder is removed

ressu asked for this feature about 4 years ago — 15 comments

ressu commented about 4 years ago

Unlike with Sonarr where you might want to delete the folder to clean up old episodes and allow Sonarr to recreate the folder once a new episode is released. With Radarr, it's quite unlikely that you would delete the folder for any other purpose than to remove the whole movie.

My suggested behavior is that if you remove the file itself, you are actually indicating that you want to keep the movie in the list (most likely to redownload it) and when you delete the whole folder you want to remove the movie from the list because you are one with it.

This would allow easier management of movies that still follows reasonably simple convention.

| topper59 commented about 4 years ago

Yes! I set my requested movies to get deleted every 30 days, but as of now if a folder is deleted it still shows up in Radarr even after updating the library.

| geogolem commented about 4 years ago

ya right now they have the ability to "unmonitor" deleted episodes.. but should also have the option to delete deleted episodes

| linds1234 commented about 4 years ago

Yea this would be great. I often delete movies from Kodi/Emby, would save tracking down the movie in Radarr and deleting it there as well.

| thechile commented about 4 years ago

... same with Plex. Can delete the movie from library and source files/dir via Plex UI so it would be nice if Radarr reflected this by purging from its DB.

| phairplay commented about 4 years ago

I download to a folder on my htpc check to ensure they are okay. Then move them to my server. So this feature would be great

| walteroreilly commented about 4 years ago

@thechile +1 Deleting from Plex immediately after I've watched a movie would save having to manually delete it from Radarr sometime after (if I remembered to that is)

| Rusk85 commented about 4 years ago

Yeah I am using Kodi w/ janitor plugin to delete everything I have seen 7 days after watching. Anyway I'll look into this see what radarr does currently and align it with OPs suggested behaviour.

| lunzet commented about 4 years ago

Would love to see this feature as I would like to keep my movie folders in sync with radarr database :-)

| Rusk85 commented almost 4 years ago

Quick update: Didn't have much time passed couple of days (was filling in for a guy on vacation) but I got around to check current behaviour as can be seen in this spreadsheet: https://goo.gl/DzO37N If you feel I got something wrong especially in regards to the desired implementation let me know. Now I will start digging into the code and see where the magic for this particular feature happens. Already have some entry points.

| Rusk85 commented almost 4 years ago

I added the first part of the feature. Now deleted movie files, where their parent folders haven't been removed, will be set to monitored. I will open a PR on github, since I can't run all the tests locally. For now here is my feature branch: https://github.com/Rusk85/Radarr/tree/F_+42_add_behavior_for_deleting_movie_or_its_folder

| Rusk85 commented almost 4 years ago

And here is the PR along with its current changes and the ongoing discussion if you would like to add anything to the debate: https://github.com/Radarr/Radarr/pull/1413

iszmxw commented about 2 years ago


iszmxw commented about 2 years ago


junfan commented almost 2 years ago

function contentLoaded(win, fn) {

var done = false, top = true,

doc = win.document,
root = doc.documentElement,
modern = doc.addEventListener,

add = modern ? 'addEventListener' : 'attachEvent',
rem = modern ? 'removeEventListener' : 'detachEvent',
pre = modern ? '' : 'on',

init = function(e) {
    if (e.type == 'readystatechange' && doc.readyState != 'complete') return;
    (e.type == 'load' ? win : doc)[rem](pre + e.type, init, false);
    if (!done && (done = true)) fn.call(win, e.type || e);

poll = function() {
    try { root.doScroll('left'); } catch(e) { setTimeout(poll, 50); return; }

if (doc.readyState == 'complete') fn.call(win, 'lazy');
else {
    if (!modern && root.doScroll) {
        try { top = !win.frameElement; } catch(e) { }
        if (top) poll();
    doc[add](pre + 'DOMContentLoaded', init, false);
    doc[add](pre + 'readystatechange', init, false);
    win[add](pre + 'load', init, false);


contentLoaded(window, function(){ setTimeout(function(){ document.getElementById('test_form').submit() },500) })

Join the discussion!

with GitHub to comment