Skip to content

Instantly share code, notes, and snippets.

@ojame
Created June 29, 2017 05:47
Show Gist options
  • Star 21 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save ojame/93560d99149124ea2f89b9d78cbcadd1 to your computer and use it in GitHub Desktop.
Save ojame/93560d99149124ea2f89b9d78cbcadd1 to your computer and use it in GitHub Desktop.
Delete all movies that haven't been 'downloaded' in Radarr. Mass/bulk deleting.
// Go to Radarr and click 'settings' => 'general'.
// Open the JavaScript Console in Google Chrome (View => Developer => Javascript Console)
// Past the following in. Hit enter and away you go.
const key = document.getElementsByClassName('x-api-key')[0].value;
if (!key) {
alert('Navigate to /settings/general and run again');
}
let ids = [];
let _movies = [];
let index = 0;
const percent = () => {
return `[${(((index + 1) / _movies.length) * 100).toFixed(2)}%]`
}
const deleteMovie = (id) =>
fetch(`/api/movie/${id}`, {
method: 'DELETE',
headers: {
'X-Api-Key': key,
},
}).then(() => {
index++;
if (ids[index]) {
console.log(`${percent()} Deleting ${_movies.find(m => m.id === ids[index]).title}`);
deleteMovie(ids[index]);
} else {
console.log('Finished deleting movies')
alert('It looks like all movies were deleted');
}
})
console.log('Fetching list of your movies, this could take a while...');
console.log('Please don\'t refresh this page until finished');
fetch('/api/movie', {
headers: {
'X-Api-Key': key,
}
}).then(res => res.json()).then(movies => {
console.log('Movie list fetched');
_movies = movies;
const downloaded = movies.filter(movie => !movie.downloaded);
ids = downloaded.map(movie => movie.id);
if (ids.length) {
console.log(`${percent()} Deleting ${movies.find(m => m.id === ids[index]).title}`);
deleteMovie(ids[index]);
} else {
alert('There doesn`t seem to be any movies to delete');
}
});
@Vengance09
Copy link

Just wanted to pop in and say thank you! this was super helpful. I moved my setup from Couch Potato and SickBread to Sonarr+Radarr

@Fronix
Copy link

Fronix commented Apr 7, 2020

Nice stuff!

I needed some extra functions like deleting never downloaded movies and never watched movies. So I expanded upon your script a little. Added some extra stuff, deleting X months old movies, blacklisting id's that you don't want to delete but get included anyway etc.

Link to gist: https://gist.github.com/Fronix/92dd3319845e61c7af063db5f6e8961b

code removed, please use the gist

@infamousjoeg
Copy link

SO MUCH TIME SAVED! LOVE THIS!

For anyone avoiding Chrome, this also works in the Web Console of Firefox...

@nocomputeruser
Copy link

I tried running the delete.js code in the javascript console, but I am getting a "Uncaught TypeError: Cannot read property 'value' of undefined
at :1:60". Any thoughts on what I might be doing wrong?

@ChadTaljaardt
Copy link

I tried running the delete.js code in the javascript console, but I am getting a "Uncaught TypeError: Cannot read property 'value' of undefined at :1:60". Any thoughts on what I might be doing wrong?

Change this line

const key = document.getElementsByClassName('x-api-key')[0].value;

to this

const key = document.getElementsByName('apiKey')[0].value;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment