-
-
Save ojame/93560d99149124ea2f89b9d78cbcadd1 to your computer and use it in GitHub Desktop.
// 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'); | |
} | |
}); |
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
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
SO MUCH TIME SAVED! LOVE THIS!
For anyone avoiding Chrome, this also works in the Web Console of Firefox...
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?
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;
Awesome, this helped a lot thank you! For anyone else stumbling upon this, you can easily change it to delete all unmonitored by changing !movie.downloaded to !movie.monitored in line 49.