diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs
index 55ee454d2e..cf62e42ba7 100644
--- a/MediaBrowser.Api/LibraryService.cs
+++ b/MediaBrowser.Api/LibraryService.cs
@@ -465,13 +465,16 @@ namespace MediaBrowser.Api
if (item.LocationType == LocationType.FileSystem)
{
- if (Directory.Exists(item.Path))
+ foreach (var path in item.GetDeletePaths().ToList())
{
- Directory.Delete(item.Path, true);
- }
- else if (File.Exists(item.Path))
- {
- File.Delete(item.Path);
+ if (Directory.Exists(path))
+ {
+ Directory.Delete(path, true);
+ }
+ else if (File.Exists(path))
+ {
+ File.Delete(path);
+ }
}
if (parent != null)
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 3f06136434..d882824293 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1765,5 +1765,14 @@ namespace MediaBrowser.Controller.Entities
// See if we can avoid a file system lookup by looking for the file in ResolveArgs
return metaFileEntry == null ? FileSystem.GetLastWriteTimeUtc(imagePath) : FileSystem.GetLastWriteTimeUtc(metaFileEntry);
}
+
+ ///
+ /// Gets the file system path to delete when the item is to be deleted
+ ///
+ ///
+ public virtual IEnumerable GetDeletePaths()
+ {
+ return new[] { Path };
+ }
}
}
diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs
index e8374c2743..ea39cf50ad 100644
--- a/MediaBrowser.Controller/Entities/Game.cs
+++ b/MediaBrowser.Controller/Entities/Game.cs
@@ -7,7 +7,7 @@ namespace MediaBrowser.Controller.Entities
public class Game : BaseItem, IHasSoundtracks
{
public List SoundtrackIds { get; set; }
-
+
public Game()
{
MultiPartGameFiles = new List();
@@ -84,5 +84,15 @@ namespace MediaBrowser.Controller.Entities
}
return base.GetUserDataKey();
}
+
+ public override IEnumerable GetDeletePaths()
+ {
+ if (!IsInMixedFolder)
+ {
+ return new[] { System.IO.Path.GetDirectoryName(Path) };
+ }
+
+ return base.GetDeletePaths();
+ }
}
}
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index f090ce2a27..5eab1cae0c 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -248,5 +248,10 @@ namespace MediaBrowser.Controller.Entities.TV
{
get { return LocationType == Model.Entities.LocationType.Virtual && IsUnaired; }
}
+
+ public override IEnumerable GetDeletePaths()
+ {
+ return new[] { Path };
+ }
}
}
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 6a27ed6906..ef768f6280 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -258,5 +258,14 @@ namespace MediaBrowser.Controller.Entities
}).ToList();
}
+ public override IEnumerable GetDeletePaths()
+ {
+ if (!IsInMixedFolder)
+ {
+ return new[] { System.IO.Path.GetDirectoryName(Path) };
+ }
+
+ return base.GetDeletePaths();
+ }
}
}