I was running out of HD space again and for the heck of it checked how much space my downloaded podcasts were taking up - 1.9GB. This wasn't that surprising, but I did notice there were media files of podcasts lying around that I had unsubscribed from a looong time ago. So I needed something that would do two things:
a) Delete all the podcasts I had already listened to b) Go through all the residue in the Podcast folder and delete whatever I had already unsubcribed from.
I subscribe to 14 shows so this wouldn't have been much of an issue to do by hand, but I decided to use AppleScript. Here's the script that does all that:
set podcastFolder to alias "hd:Users:filipp:Music:iTunes:iTunes Music:Podcasts:"
-- first get rid of played podcasts
tell application "iTunes"
set deleteThese to every file track of playlist "Podcasts" whose unplayed is false
set dontDelete to location of every file track of playlist "Podcasts" whose unplayed is true as list
repeat with thisPodcast in deleteThese
set thePath to (location of thisPodcast as string)
delete thisPodcast
tell application "Finder"
move item thePath to the trash
end tell
end repeat
end tell
-- now comb the fs for any rogue shows
tell application "Finder"
repeat with something in list folder podcastFolder without invisibles
set fullpath to (podcastFolder as string) & something
if dontDelete as string does not contain fullpath then
move item fullpath to the trash
end if
end repeat
end tell
It's not particularly clever or terse and turned out to be quite the overkill, but it works - my Podcasts take up 56 MB now. Plus I can safely check out all the shows I want and not worry about getting rid of them later (just drop the script into ~/Library/Scripts/iTunes). ;-) This could also be easaily improved to, for example, disregard shows that are unselected (if you have a played show that you really want to keep).
If you ask me, iTunes should just re-evaluate your “Keep” preference for podcasts every time you hit “Refresh”. That way you could clean things up anytime you like, without resorting to this kind of “violence”.