diff --git a/.vs/Pecee.Emby.Plugin.Vod/v15/.suo b/.vs/Pecee.Emby.Plugin.Vod/v15/.suo new file mode 100644 index 0000000..6bf8ea1 Binary files /dev/null and b/.vs/Pecee.Emby.Plugin.Vod/v15/.suo differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/db.lock similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs rename to .vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/db.lock diff --git a/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000..fad1809 Binary files /dev/null and b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide differ diff --git a/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-shm b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 0000000..891d4c8 Binary files /dev/null and b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-shm differ diff --git a/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-wal b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 0000000..d7085e7 Binary files /dev/null and b/.vs/Pecee.Emby.Plugin.Vod/v15/Server/sqlite3/storage.ide-wal differ diff --git a/MediaBrowser.Plugin.RemoteVideos/Channel.cs b/MediaBrowser.Plugin.RemoteVideos/Channel.cs deleted file mode 100644 index 0948c23..0000000 --- a/MediaBrowser.Plugin.RemoteVideos/Channel.cs +++ /dev/null @@ -1,213 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Channels; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using Pecee.Emby.Plugin.Vod.Configuration; -using Pecee.Emby.Plugin.Vod.Folder; -using Pecee.Emby.Plugin.Vod.Models; -using ChannelFolderType = Pecee.Emby.Plugin.Vod.Folder.ChannelFolderType; - -namespace Pecee.Emby.Plugin.Vod -{ - public class Channel : IChannel, IIndexableChannel - { - public string Name => PluginConfiguration.Name; - - public string Description => PluginConfiguration.Description; - - public string DataVersion - { - get { return "112"; } - } - - public string HomePageUrl => PluginConfiguration.HomepageUrl; - - public ChannelParentalRating ParentalRating => ChannelParentalRating.GeneralAudience; - - private readonly ILogger _logger; - private readonly IProviderManager _providerManager; - private readonly ILibraryManager _libraryManager; - - public Channel(ILogManager logManager, IProviderManager providerManager, ILibraryManager libraryManager) - { - _logger = logManager.GetLogger(PluginConfiguration.Name); - _providerManager = providerManager; - _libraryManager = libraryManager; - } - - public InternalChannelFeatures GetChannelFeatures() - { - return new InternalChannelFeatures - { - ContentTypes = new List - { - ChannelMediaContentType.Movie, - ChannelMediaContentType.MovieExtra, - }, - - MediaTypes = new List - { - ChannelMediaType.Video, - }, - - SupportsSortOrderToggle = true, - SupportsContentDownloading = true, - - DefaultSortFields = new List - { - ChannelItemSortField.Name, - ChannelItemSortField.CommunityRating, - ChannelItemSortField.CommunityPlayCount, - ChannelItemSortField.PremiereDate, - ChannelItemSortField.Runtime, - ChannelItemSortField.DateCreated, - }, - AutoRefreshLevels = 2 - }; - } - - public bool IsEnabledFor(string userId) - { - // TODO: change channel disabled - return Plugin.Instance.Configuration.ChannelEnabled; - } - - public Task GetChannelImage(ImageType type, CancellationToken cancellationToken) - { - switch (type) - { - case ImageType.Primary: - case ImageType.Thumb: - case ImageType.Backdrop: - return new Task(() => Plugin.GetImage(type.ToString().ToLower())); - } - throw new ArgumentException("Unsupported image type: " + type); - } - - public IEnumerable GetSupportedChannelImages() - { - return new List - { - ImageType.Thumb, - ImageType.Backdrop, - ImageType.Primary - }; - } - - public ChannelItemResult GetChannelPlaylists(InternalChannelItemQuery query) - { - var playlists = Plugin.Instance.Configuration.Playlists; - - var channelItems = new List(); - - foreach (var playlist in playlists) - { - var item = new ChannelItemInfo() - { - Id = ChannelFolder.GetUrl(ChannelFolderType.Playlist, playlist.IdentifierId.ToString()), - Type = ChannelItemType.Folder, - Name = playlist.Name, - }; - - channelItems.Add(item); - } - - return new ChannelItemResult() - { - Items = channelItems.OrderBy(i => i.Name).ToList(), - TotalRecordCount = channelItems.Count - }; - } - - public async Task GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken) - { - var folder = ChannelFolder.Parse(query.FolderId); - - _logger.Debug("Render channel folder id: {0}", query.FolderId); - - switch (folder.Type) - { - case ChannelFolderType.Playlist: - { - var playlist = _libraryManager.GetUserRootFolder().RecursiveChildren.OfType().FirstOrDefault(p => p.IdentifierId.ToString() == folder.Id); - if (playlist != null) - { - return GetPlaylistItems(playlist, cancellationToken); - } - break; - } - } - - return GetChannelPlaylists(query); - } - - public ChannelItemResult GetPlaylistItems(VodPlaylist playlist, CancellationToken cancellationToken) - { - var mediaItems = playlist.RecursiveChildren.OfType().ToList(); - - var items = (from media in mediaItems - let image = media.GetImages(ImageType.Primary).FirstOrDefault() - select new ChannelItemInfo() - { - Id = media.IdentifierId.ToString(), - Name = media.Name, - ImageUrl = image?.Path, - Type = ChannelItemType.Media, - MediaType = ChannelMediaType.Video, - ContentType = ChannelMediaContentType.Movie, - MediaSources = media.ChannelMediaSources, - Tags = media.Tags, - CommunityRating = media.CommunityRating, - Studios = media.Studios, - DateCreated = media.DateCreated, - ProductionYear = media.ProductionYear, - ProviderIds = media.ProviderIds, - Overview = media.Overview, - Genres = media.Genres, - HomePageUrl = media.HomePageUrl, - OfficialRating = media.OfficialRating, - PremiereDate = media.PremiereDate, - RunTimeTicks = media.RunTimeTicks, - }).ToList(); - - return new ChannelItemResult() - { - Items = items.OrderBy(i =>i.Name).ToList() - }; - - } - - public async Task GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken) - { - var playlists = _libraryManager.GetUserRootFolder().RecursiveChildren.OfType().ToList(); - - var items = new List(); - - foreach (var playlist in playlists) - { - var result = GetPlaylistItems(playlist, cancellationToken); - items.AddRange(result.Items); - } - - return new ChannelItemResult() - { - Items = items, - TotalRecordCount = items.Count - }; - } - - /*public Task LoadRegistrationInfoAsync() - { - Plugin.Instance.Registration = await PluginSecurityManager.GetRegistrationStatus(PluginConfiguration.Name).ConfigureAwait(false); - Plugin.Logger.Debug("PodCasts Registration Status - Registered: {0} In trial: {2} Expiration Date: {1} Is Valid: {3}", Plugin.Instance.Registration.IsRegistered, Plugin.Instance.Registration.ExpirationDate, Plugin.Instance.Registration.TrialVersion, Plugin.Instance.Registration.IsValid); - }*/ - } -} - diff --git a/MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj b/MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj deleted file mode 100644 index cd097b1..0000000 --- a/MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj +++ /dev/null @@ -1,101 +0,0 @@ - - - - - 11.0 - Debug - AnyCPU - {8554F77D-F923-4596-B0C3-0225560F000D} - Library - Properties - Pecee.Emby.Plugin.Vod - Pecee.Emby.Plugin.Vod - en-US - 512 - {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Profile7 - v4.5 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ..\packages\MediaBrowser.Common.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Common.dll - True - - - ..\packages\MediaBrowser.Server.Core.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Controller.dll - True - - - ..\packages\MediaBrowser.Common.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Model.dll - True - - - - - - - - - - - SET destination="%25AppData%25\Emby-Server\plugins\" -echo Copying to %25destination%25 -xcopy "$(TargetPath)" %25destination%25 /y - - - \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos/Plugin.cs b/MediaBrowser.Plugin.RemoteVideos/Plugin.cs deleted file mode 100644 index c5f29b4..0000000 --- a/MediaBrowser.Plugin.RemoteVideos/Plugin.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Plugins; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Plugins; -using MediaBrowser.Model.Serialization; -using Pecee.Emby.Plugin.Vod.Configuration; -using Pecee.Emby.Plugin.Vod.Models; - -namespace Pecee.Emby.Plugin.Vod -{ - public class Plugin : BasePlugin, IHasWebPages - { - - public static Plugin Instance { get; private set; } - - public override string Name => PluginConfiguration.Name; - - public override string Description => PluginConfiguration.Description; - - public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer) : base(applicationPaths, xmlSerializer) - { - Instance = this; - } - - public IEnumerable GetPages() - { - return new[] - { - new PluginPageInfo - { - Name = "vod.config", - EmbeddedResourcePath = GetType().Namespace + ".Configuration.configPage.html" - }, - }; - } - - public static DynamicImageResponse GetImage(string name) - { - var type = typeof(Plugin); - var path = String.Format("{0}.Images.{1}.png", type.Namespace, name); - return new DynamicImageResponse - { - Format = ImageFormat.Png, - HasImage = true, - Stream = type.GetTypeInfo().Assembly.GetManifestResourceStream(path) - }; - } - } -} diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Common.dll b/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Common.dll deleted file mode 100644 index 4efc6bc..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Common.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Controller.dll b/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Controller.dll deleted file mode 100644 index 69afa6f..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Controller.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Model.dll b/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Model.dll deleted file mode 100644 index c778f8e..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Model.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache deleted file mode 100644 index f648ae5..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.dll b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.dll deleted file mode 100644 index 32285e6..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.pdb b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.pdb deleted file mode 100644 index b227f32..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.pdb and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.dll b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.dll deleted file mode 100644 index c2e947d..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.dll b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.dll deleted file mode 100644 index af738d6..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.pdb b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.pdb deleted file mode 100644 index e81c241..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.pdb and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.dll b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.dll deleted file mode 100644 index c2cd0f7..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.dll and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.pdb b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.pdb deleted file mode 100644 index 40722db..0000000 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/Pecee.Emby.Plugin.Vod.pdb and /dev/null differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt b/MediaBrowser.Plugin.RemoteVideos/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt deleted file mode 100644 index 0ea111c..0000000 --- a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt +++ /dev/null @@ -1,7 +0,0 @@ -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.dll -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.pdb -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Common.dll -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Controller.dll -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Model.dll -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.dll -D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.pdb diff --git a/MediaBrowser.Plugin.RemoteVideos/packages.config b/MediaBrowser.Plugin.RemoteVideos/packages.config deleted file mode 100644 index dddfbd1..0000000 --- a/MediaBrowser.Plugin.RemoteVideos/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Pecee.Emby.Plugin.Vod.sln b/Pecee.Emby.Plugin.Vod.sln new file mode 100644 index 0000000..2eedc04 --- /dev/null +++ b/Pecee.Emby.Plugin.Vod.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.102 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Project", "Project\Project.csproj", "{49954555-C42F-4E6B-A7B7-0A0A2008A9CD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {49954555-C42F-4E6B-A7B7-0A0A2008A9CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {49954555-C42F-4E6B-A7B7-0A0A2008A9CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {49954555-C42F-4E6B-A7B7-0A0A2008A9CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {49954555-C42F-4E6B-A7B7-0A0A2008A9CD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {76AE9AD3-F336-4717-AABF-D640399E32C7} + EndGlobalSection +EndGlobal diff --git a/Pecee.Emby.Plugin.Vod.sln.DotSettings.user b/Pecee.Emby.Plugin.Vod.sln.DotSettings.user new file mode 100644 index 0000000..026a870 --- /dev/null +++ b/Pecee.Emby.Plugin.Vod.sln.DotSettings.user @@ -0,0 +1,8 @@ + + <AssemblyExplorer> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Theater.3.0.74\lib\net45\MediaBrowser.Theater.Interfaces.dll" /> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Common.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Model.dll" /> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Server.Core.3.0.695\lib\net45\MediaBrowser.Controller.dll" /> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Server.Core.3.5.0\lib\netstandard2.0\MediaBrowser.Controller.dll" /> + <Assembly Path="C:\Users\simon\.nuget\packages\mediabrowser.common\3.5.0\lib\netstandard2.0\MediaBrowser.Model.dll" /> +</AssemblyExplorer> \ No newline at end of file diff --git a/Pecee.Emby.Plugins.sln b/Pecee.Emby.Plugins.sln deleted file mode 100644 index f63d7c8..0000000 --- a/Pecee.Emby.Plugins.sln +++ /dev/null @@ -1,22 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pecee.Emby.Plugin.Vod", "MediaBrowser.Plugin.RemoteVideos\Pecee.Emby.Plugin.Vod.csproj", "{8554F77D-F923-4596-B0C3-0225560F000D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8554F77D-F923-4596-B0C3-0225560F000D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8554F77D-F923-4596-B0C3-0225560F000D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8554F77D-F923-4596-B0C3-0225560F000D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8554F77D-F923-4596-B0C3-0225560F000D}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Pecee.Emby.Plugins.sln.DotSettings.user b/Pecee.Emby.Plugins.sln.DotSettings.user deleted file mode 100644 index b1ecdf1..0000000 --- a/Pecee.Emby.Plugins.sln.DotSettings.user +++ /dev/null @@ -1,5 +0,0 @@ - - <AssemblyExplorer> - <Assembly Path="D:\Visual Studio\MediaBrowser.Plugin.RemoteVideos\packages\MediaBrowser.Server.Core.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Controller.dll" /> - <Assembly Path="D:\Visual Studio\emby.plugin.vod\packages\MediaBrowser.Server.Core.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Controller.dll" /> -</AssemblyExplorer> \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos.sln.DotSettings.user b/Pecee.Plugin.Emby.Vod.sln.DotSettings.user similarity index 58% rename from MediaBrowser.Plugin.RemoteVideos.sln.DotSettings.user rename to Pecee.Plugin.Emby.Vod.sln.DotSettings.user index da2a830..64ba77d 100644 --- a/MediaBrowser.Plugin.RemoteVideos.sln.DotSettings.user +++ b/Pecee.Plugin.Emby.Vod.sln.DotSettings.user @@ -1,4 +1,5 @@  <AssemblyExplorer> - <Assembly Path="D:\Visual Studio\MediaBrowser.Plugin.RemoteVideos\packages\MediaBrowser.Server.Core.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Controller.dll" /> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Theater.3.0.74\lib\net45\MediaBrowser.Theater.Interfaces.dll" /> + <Assembly Path="E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\packages\MediaBrowser.Common.3.0.695\lib\portable-net45+win8+wpa81\MediaBrowser.Model.dll" /> </AssemblyExplorer> \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos/Api/PlaylistsEndpoint.cs b/Project/Api/PlaylistsEndpoint.cs similarity index 96% rename from MediaBrowser.Plugin.RemoteVideos/Api/PlaylistsEndpoint.cs rename to Project/Api/PlaylistsEndpoint.cs index b97b164..d1d5e93 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Api/PlaylistsEndpoint.cs +++ b/Project/Api/PlaylistsEndpoint.cs @@ -77,8 +77,8 @@ public void Post(PlaylistRequest request) StrictSync = request.StrictSync, }); - Plugin.Instance.Configuration.Playlists = list.ToArray(); - Plugin.Instance.SaveConfiguration(); + Plugin.Instance.Configuration.Playlists = list.ToArray(); + Plugin.Instance.SaveConfiguration(); } } diff --git a/Project/Channel.cs b/Project/Channel.cs new file mode 100644 index 0000000..0d0a94c --- /dev/null +++ b/Project/Channel.cs @@ -0,0 +1,274 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Channels; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; +using Pecee.Emby.Plugin.Vod.Configuration; +using Pecee.Emby.Plugin.Vod.Folder; +using Pecee.Emby.Plugin.Vod.Models; +using ChannelFolderType = Pecee.Emby.Plugin.Vod.Folder.ChannelFolderType; + +namespace Pecee.Emby.Plugin.Vod +{ + public class Channel : IChannel, ISearchableChannel + { + public string Name => PluginConfiguration.Name; + + public string Description => PluginConfiguration.Description; + + public string DataVersion => "10"; + + public string HomePageUrl => PluginConfiguration.HomepageUrl; + + public ChannelParentalRating ParentalRating => ChannelParentalRating.GeneralAudience; + + private readonly ILibraryManager _libraryManager = Plugin.Instance.LibraryManager; + private readonly ILogger _logger = Plugin.Instance.Logger; + + + public InternalChannelFeatures GetChannelFeatures() + { + return new InternalChannelFeatures + { + ContentTypes = new List + { + ChannelMediaContentType.Movie, + ChannelMediaContentType.MovieExtra, + ChannelMediaContentType.Trailer, + ChannelMediaContentType.Clip, + }, + + MediaTypes = new List + { + ChannelMediaType.Video, + }, + + SupportsSortOrderToggle = true, + SupportsContentDownloading = true, + + DefaultSortFields = new List + { + ChannelItemSortField.Name, + ChannelItemSortField.CommunityRating, + ChannelItemSortField.CommunityPlayCount, + ChannelItemSortField.PremiereDate, + ChannelItemSortField.Runtime, + ChannelItemSortField.DateCreated, + }, + }; + } + + public bool IsEnabledFor(string userId) + { + return Plugin.Instance.Configuration.ChannelEnabled; + } + + public Task GetChannelImage(ImageType type, CancellationToken cancellationToken) + { + try + { + switch (type) + { + case ImageType.Primary: + case ImageType.Thumb: + case ImageType.Backdrop: + return new Task(() => Plugin.GetImage(type.ToString().ToLower()), + cancellationToken); + } + + throw new ArgumentException("Unsupported image type: " + type); + } + catch (Exception e) + { + Plugin.Instance.Logger.ErrorException("[VOD] Error: " + e.Message, e); + } + + return null; + } + + public IEnumerable GetSupportedChannelImages() + { + return new List + { + ImageType.Thumb, + ImageType.Backdrop, + ImageType.Primary, + ImageType.Banner, + ImageType.Art, + }; + } + + public Task GetChannelPlaylists(CancellationToken cancellationToken) + { + Plugin.Instance.Logger.Debug("[VOD] Get channel playlists"); + var items = Plugin.Instance.Configuration.Playlists.Select(p => new ChannelItemInfo() + { + Id = ChannelFolder.GetUrl(ChannelFolderType.Playlist, p.IdentifierId.ToString()), + MediaType = ChannelMediaType.Video, + ContentType = ChannelMediaContentType.Movie, + FolderType = MediaBrowser.Model.Channels.ChannelFolderType.Container, + Type = ChannelItemType.Media, + Name = p.Name, + }).OrderBy(i => i.Name).ToList(); + + _logger.Debug("[VOD] found {0} items", items.Count); + + return Task.FromResult(new ChannelItemResult() + { + Items = items, + TotalRecordCount = items.Count(), + }); + } + + public async Task GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken) + { + + Plugin.Instance.Logger.Debug("[VOD] Get channel items"); + + if (string.IsNullOrWhiteSpace(query.FolderId)) + { + _logger.Debug("[VOD] Channel items default"); + return await GetAllMedia(query, cancellationToken).ConfigureAwait(false); + //return await GetChannelPlaylists(cancellationToken).ConfigureAwait(false); + } + + + var folder = ChannelFolder.Parse(query.FolderId); + + Plugin.Instance.Logger.Debug("[VOD] Render channel folder id: {0}", query.FolderId); + + switch (folder.Type) + { + default: + case ChannelFolderType.Playlist: + { + Plugin.Instance.Logger.Debug("[VOD] Get channel items playlist for id: {0} - {1}", folder.Id, folder.Type.ToString()); + var playlist = _libraryManager.GetUserRootFolder().GetRecursiveChildren().OfType() + .FirstOrDefault(p => p.IdentifierId.ToString() == folder.Id.ToString()); + + if (playlist != null) + { + Plugin.Instance.Logger.Debug("[VOD] Found channel playlist: {0}", playlist.Name); + return await new Task(() => GetPlaylistItems(playlist), cancellationToken).ConfigureAwait(false); + } + + break; + } + } + + return new ChannelItemResult() + { + Items = new List() + }; + + } + + public ChannelItemResult GetPlaylistItems(VodPlaylist playlist) + { + + Plugin.Instance.Logger.Debug("[VOD] Get playlist items"); + var mediaItems = playlist.GetRecursiveChildren().OfType(); + + var items = (from media in mediaItems + let image = media.GetImages(ImageType.Primary).FirstOrDefault() + select new ChannelItemInfo() + { + Id = media.Id.ToString(), + Name = media.Name, + ImageUrl = image?.Path, + Type = ChannelItemType.Media, + MediaType = ChannelMediaType.Video, + ContentType = ChannelMediaContentType.Movie, + FolderType = MediaBrowser.Model.Channels.ChannelFolderType.Container, + MediaSources = media.GetMediaSources(false), + Tags = media.Tags.ToList(), + CommunityRating = media.CommunityRating, + Studios = media.Studios.ToList(), + DateCreated = media.DateCreated, + ProductionYear = media.ProductionYear, + ProviderIds = media.ProviderIds, + Overview = media.Overview, + Genres = media.Genres.ToList(), + HomePageUrl = media.GetRelatedUrls().Select(u => u.Url).FirstOrDefault(), + OfficialRating = media.OfficialRating, + PremiereDate = media.PremiereDate, + RunTimeTicks = media.RunTimeTicks, + }).ToList(); + + return new ChannelItemResult() + { + Items = items.OrderBy(i => i.Name).ToList(), + TotalRecordCount = items.Count + }; + + } + + public Task GetAllMedia(InternalChannelItemQuery query, CancellationToken cancellationToken) + { + var playlists = _libraryManager.GetUserRootFolder().GetRecursiveChildren().OfType().ToList(); + + var items = new List(); + + foreach (var playlist in playlists) + { + items.AddRange(GetPlaylistItems(playlist).Items); + } + + var result = new ChannelItemResult() + { + Items = items, + TotalRecordCount = items.Count + }; + + return Task.FromResult(result); + } + + public Task> Search(ChannelSearchInfo searchInfo, CancellationToken cancellationToken) + { + + Plugin.Instance.Logger.Debug("[VOD] Search"); + + return new Task>(delegate + { + var playlists = _libraryManager.GetUserRootFolder().GetRecursiveChildren().OfType().Where(i => i.Name.Contains(searchInfo.SearchTerm) || i.Overview.Contains(searchInfo.SearchTerm)).ToList(); + + var mediaItems = playlists.SelectMany(i => i.RecursiveChildren.OfType()); + + return (from media in mediaItems + select new ChannelItemInfo() + { + Id = ChannelFolder.GetUrl(ChannelFolderType.Playlist, media.IdentifierId.ToString()), + Name = media.Name, + ImageUrl = media.PrimaryImagePath, + Type = ChannelItemType.Media, + MediaType = ChannelMediaType.Video, + ContentType = ChannelMediaContentType.Movie, + MediaSources = media.GetMediaSources(false), + Tags = media.Tags.ToList(), + CommunityRating = media.CommunityRating, + Studios = media.Studios.ToList(), + DateCreated = media.DateCreated, + ProductionYear = media.ProductionYear, + ProviderIds = media.ProviderIds, + Overview = media.Overview, + Genres = media.Genres.ToList(), + HomePageUrl = media.GetRelatedUrls().Select(u => u.Url).FirstOrDefault(), + OfficialRating = media.OfficialRating, + PremiereDate = media.PremiereDate, + RunTimeTicks = media.RunTimeTicks, + }).ToList(); + + }, cancellationToken); + + + } + } +} + diff --git a/MediaBrowser.Plugin.RemoteVideos/Configuration/PluginConfiguration.cs b/Project/Configuration/PluginConfiguration.cs similarity index 93% rename from MediaBrowser.Plugin.RemoteVideos/Configuration/PluginConfiguration.cs rename to Project/Configuration/PluginConfiguration.cs index 3cb16c8..8efd868 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Configuration/PluginConfiguration.cs +++ b/Project/Configuration/PluginConfiguration.cs @@ -20,7 +20,7 @@ public class PluginConfiguration : BasePluginConfiguration public static string Description = "Add remote playlist for instant Video On Demand that will be integrated with your local library."; - public static string Version = "1.0.0.0"; + public static string Version = "2.0.0.0"; public static string HomepageUrl = "http://www.pecee.dk"; @@ -33,7 +33,6 @@ public class PluginConfiguration : BasePluginConfiguration public PluginConfiguration() { Playlists = new PlaylistConfig[] { }; - ChannelEnabled = true; } } diff --git a/MediaBrowser.Plugin.RemoteVideos/Configuration/configPage.html b/Project/Configuration/configPage.html similarity index 53% rename from MediaBrowser.Plugin.RemoteVideos/Configuration/configPage.html rename to Project/Configuration/configPage.html index c92e012..d7605d0 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Configuration/configPage.html +++ b/Project/Configuration/configPage.html @@ -1,65 +1,75 @@  - VOD Plugin Configuration + VOD Plugin Configuration -
-
-
-
-
-

Video on Demand

- -
-
-
-
- -
-
-

New Playlist

-
-
-
-
- - -
-
-
- - -
-
- - -
-
- -
- Create visible collection outside channel -
-
- -
- When playlist items are deleted, local items will also be deleted. -
-
- - -
-
-
- -
-
- - -
+ + - + \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos/Entities/Media.cs b/Project/Entities/Media.cs similarity index 65% rename from MediaBrowser.Plugin.RemoteVideos/Entities/Media.cs rename to Project/Entities/Media.cs index 23b1c98..85b1534 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Entities/Media.cs +++ b/Project/Entities/Media.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.MediaInfo; using Pecee.Emby.Plugin.Vod.Models; @@ -33,26 +34,26 @@ public IVodMedia ToVodItem () IdentifierId = this.Url.ToString().GetMD5(), }; - media.ChannelMediaSources = new List - { - new ChannelMediaInfo + media.GetMediaSources(true).Add( + new MediaSourceInfo { Path = Url, - Protocol = MediaProtocol.Http, - } - }; + TranscodingUrl = Url, + IsRemote = true, + Protocol = MediaProtocol.Http + }); if (Image != null) { - media.ImageInfos = new List() - { - new ItemImageInfo() - { - Path = Image, - Type = ImageType.Primary, - DateModified = DateTime.Now - } - }; + media.ImageInfos = new ItemImageInfo[] + { + new ItemImageInfo() + { + Path = Image, + Type = ImageType.Primary, + DateModified = DateTime.Now + } + }; } return media; diff --git a/MediaBrowser.Plugin.RemoteVideos/Entities/PlaylistConfig.cs b/Project/Entities/PlaylistConfig.cs similarity index 96% rename from MediaBrowser.Plugin.RemoteVideos/Entities/PlaylistConfig.cs rename to Project/Entities/PlaylistConfig.cs index cc051f4..e149750 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Entities/PlaylistConfig.cs +++ b/Project/Entities/PlaylistConfig.cs @@ -53,7 +53,7 @@ public VodPlaylist ToPlaylist() PlaylistUrl = this.Url, //CollectionType = playlistConf.CollectionType, IdentifierId = this.IdentifierId, - IsHidden = !CreateLocalCollection + IsHidden = !CreateLocalCollection, }; } } diff --git a/MediaBrowser.Plugin.RemoteVideos/Folder/ChannelFolder.cs b/Project/Folder/ChannelFolder.cs similarity index 70% rename from MediaBrowser.Plugin.RemoteVideos/Folder/ChannelFolder.cs rename to Project/Folder/ChannelFolder.cs index f72fa46..8e8094d 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Folder/ChannelFolder.cs +++ b/Project/Folder/ChannelFolder.cs @@ -21,9 +21,10 @@ public static string GetUrl(ChannelFolderType type, string id) { if (string.IsNullOrEmpty(id)) { - return type + "-"; + return type + "_"; } - return string.Format("{0}-{1}", type, id); + + return string.Format("{0}_{1}", type.ToString().ToLower(), id.ToString()); } public override string ToString() @@ -38,26 +39,26 @@ public static ChannelFolder Parse(string folderId) return new ChannelFolder(ChannelFolderType.Home); } - var match = Regex.Match(folderId, "(?.*?)-(?.*)?"); - if (!match.Success) + var match = folderId.Split('_'); + + if (match.Length == 0) { throw new ArgumentException("Failed to parse folderId", "folderId"); } ChannelFolderType type; - if (!Enum.TryParse(match.Groups["type"].Value, out type)) + if (!Enum.TryParse(match[0], out type)) { - throw new ArgumentException("Invalid or unknown folder-type: " + match.Groups["type"].Value); + throw new ArgumentException("Invalid or unknown folder-type: " + match[0]); } - - var result = new ChannelFolder(type); - var id = match.Groups["id"]; - if (id != null) - { - result.Id = id.Value; - } + var result = new ChannelFolder(type) + { + Id = String.IsNullOrEmpty(match[1]) ? null : match[1], + Type = type, + }; + return result; } } diff --git a/MediaBrowser.Plugin.RemoteVideos/Folder/ChannelFolderType.cs b/Project/Folder/ChannelFolderType.cs similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Folder/ChannelFolderType.cs rename to Project/Folder/ChannelFolderType.cs diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/backdrop.png b/Project/Images/backdrop.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/backdrop.png rename to Project/Images/backdrop.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/movies.png b/Project/Images/movies.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/movies.png rename to Project/Images/movies.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/music.png b/Project/Images/music.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/music.png rename to Project/Images/music.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/primary.png b/Project/Images/primary.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/primary.png rename to Project/Images/primary.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/thumb.png b/Project/Images/thumb.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/thumb.png rename to Project/Images/thumb.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Images/tv.png b/Project/Images/tv.png similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Images/tv.png rename to Project/Images/tv.png diff --git a/MediaBrowser.Plugin.RemoteVideos/Models/IVodMedia.cs b/Project/Models/IVodMedia.cs similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/Models/IVodMedia.cs rename to Project/Models/IVodMedia.cs diff --git a/MediaBrowser.Plugin.RemoteVideos/Models/VodMovie.cs b/Project/Models/VodMovie.cs similarity index 80% rename from MediaBrowser.Plugin.RemoteVideos/Models/VodMovie.cs rename to Project/Models/VodMovie.cs index e5bd335..b12832e 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Models/VodMovie.cs +++ b/Project/Models/VodMovie.cs @@ -1,15 +1,18 @@ using System; +using System.Runtime.Remoting; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Serialization; namespace Pecee.Emby.Plugin.Vod.Models { public class VodMovie : Movie, IVodMedia - { + { public Guid IdentifierId { get; set; } public override LocationType LocationType => LocationType.Remote; @@ -30,14 +33,14 @@ public async Task Merge(VodMovie vodMovie) if (vodMovie.Path != this.Path) { - hasUpdate = true; + hasUpdate = true; this.Path = vodMovie.Path; - this.ChannelMediaSources = vodMovie.ChannelMediaSources; + this.GetMediaSources(true).AddRange(vodMovie.GetMediaSources(true)); } if (hasUpdate) { - await this.UpdateToRepository(ItemUpdateType.None, CancellationToken.None); + this.UpdateToRepository(ItemUpdateType.None, CancellationToken.None); } return hasUpdate; @@ -54,6 +57,6 @@ public static string GetInternalMetadataPath(string basePath, Guid id) { return System.IO.Path.Combine(basePath, "channels", id.ToString("N"), "metadata"); } - + } } diff --git a/MediaBrowser.Plugin.RemoteVideos/Models/VodMusicVideo.cs b/Project/Models/VodMusicVideo.cs similarity index 88% rename from MediaBrowser.Plugin.RemoteVideos/Models/VodMusicVideo.cs rename to Project/Models/VodMusicVideo.cs index 806d662..542924a 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Models/VodMusicVideo.cs +++ b/Project/Models/VodMusicVideo.cs @@ -1,6 +1,7 @@ using System; using System.Runtime.Serialization; using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Serialization; namespace Pecee.Emby.Plugin.Vod.Models { diff --git a/MediaBrowser.Plugin.RemoteVideos/Models/VodPlaylist.cs b/Project/Models/VodPlaylist.cs similarity index 81% rename from MediaBrowser.Plugin.RemoteVideos/Models/VodPlaylist.cs rename to Project/Models/VodPlaylist.cs index 70f6e26..d31ee9d 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Models/VodPlaylist.cs +++ b/Project/Models/VodPlaylist.cs @@ -22,7 +22,7 @@ public sealed class VodPlaylist : MediaBrowser.Controller.Entities.Folder, IColl //private String _collectionType; - public override bool IsDisplayedAsFolder => false; + public override bool IsDisplayedAsFolder => true; public PlaylistConfig Config { get; set; } @@ -52,15 +52,24 @@ public sealed class VodPlaylist : MediaBrowser.Controller.Entities.Folder, IColl public override bool SupportsDateLastMediaAdded => true; public DateTime LastImportDate { get; set; } - - public VodPlaylist() + + private SourceType _sourceType { get; set; } + + public new SourceType SourceType + { + get { return _sourceType; } + set { _sourceType = value; } + } + + public VodPlaylist() { IdentifierId = Guid.NewGuid(); SourceType = SourceType.Library; IsVirtualItem = false; + IsHidden = true; } - public async Task Merge(VodPlaylist remote) + public bool Merge(VodPlaylist remote) { var hasUpdate = false; @@ -79,12 +88,14 @@ public async Task Merge(VodPlaylist remote) if (remote.SourceType != this.SourceType) { hasUpdate = true; - this.SourceType = remote.SourceType; + + // todo: possible bug? + //this.SourceType = remote.SourceType; } if (hasUpdate) { - await this.UpdateToRepository(ItemUpdateType.None, CancellationToken.None); + this.UpdateToRepository(ItemUpdateType.None, CancellationToken.None); } return hasUpdate; diff --git a/MediaBrowser.Plugin.RemoteVideos/Models/VodSeries.cs b/Project/Models/VodSeries.cs similarity index 88% rename from MediaBrowser.Plugin.RemoteVideos/Models/VodSeries.cs rename to Project/Models/VodSeries.cs index 5190c9f..8330b37 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Models/VodSeries.cs +++ b/Project/Models/VodSeries.cs @@ -1,6 +1,7 @@ using System; using System.Runtime.Serialization; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Model.Serialization; namespace Pecee.Emby.Plugin.Vod.Models { diff --git a/MediaBrowser.Plugin.RemoteVideos/Parser/M3UParser.cs b/Project/Parser/M3UParser.cs similarity index 74% rename from MediaBrowser.Plugin.RemoteVideos/Parser/M3UParser.cs rename to Project/Parser/M3UParser.cs index b978261..2e14122 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Parser/M3UParser.cs +++ b/Project/Parser/M3UParser.cs @@ -20,13 +20,12 @@ namespace Pecee.Emby.Plugin.Vod.Parser public class M3UParser { private readonly Regex _regexPattern = new Regex(@"([^=\s]+)\=[""']([^""']+)", RegexOptions.Singleline | RegexOptions.IgnoreCase); - private readonly ILogger _logger; + private readonly ILogger _logger = Plugin.Instance.Logger; private readonly IHttpClient _httpClient; - public M3UParser(ILogManager logManager, IHttpClient httpClient) + public M3UParser(IHttpClient httpClient) { _httpClient = httpClient; - _logger = logManager.GetLogger(PluginConfiguration.Name); } public Dictionary ParseAttributes(string line) @@ -37,11 +36,11 @@ public Dictionary ParseAttributes(string line) var attributeMatches = _regexPattern.Matches(line); if (attributeMatches.Count == 0) { - _logger.Debug("No attributes found", attributeMatches.Count); + _logger.Debug("[VOD] No attributes found", attributeMatches.Count); return attributes; } - _logger.Debug("Found {0} attributes", attributeMatches.Count); + _logger.Debug("[VOD] Found {0} attributes", attributeMatches.Count); foreach (Match attribute in attributeMatches) { @@ -58,7 +57,7 @@ public Dictionary ParseAttributes(string line) continue; } - _logger.Debug("Key: {0} - Value: {1}", key, value); + _logger.Debug("[VOD] Key: {0} - Value: {1}", key, value); attributes.Add(key, value); } @@ -69,9 +68,13 @@ public async Task> GetMediaItems(VodPlaylist playlist, CancellationT { var items = new List(); - _logger.Debug("{0}: Starting to parse: {1}", playlist.Name, playlist.PlaylistUrl); + _logger.Debug("[VOD] {0}: Starting to parse: {1}", playlist.Name, playlist.PlaylistUrl); - using (Stream stream = await _httpClient.Get(playlist.PlaylistUrl.ToString(), CancellationToken.None).ConfigureAwait(false)) + using (Stream stream = await _httpClient.Get(new HttpRequestOptions() + { + Url = playlist.PlaylistUrl, + TimeoutMs = 9000 + }).ConfigureAwait(false)) { using (var reader = new StreamReader(stream)) { @@ -81,11 +84,11 @@ public async Task> GetMediaItems(VodPlaylist playlist, CancellationT if (line.IndexOf("#EXTINF", StringComparison.CurrentCulture) != 0) { - _logger.Debug("{0}: Non-valid line, skipping", playlist.Name); + _logger.Debug("[VOD] {0}: Non-valid line, skipping", playlist.Name); continue; } - _logger.Debug("Found line with #EXTINF meta information"); + _logger.Debug("[VOD] Found line with #EXTINF meta information"); var attributes = ParseAttributes(line); @@ -100,12 +103,12 @@ public async Task> GetMediaItems(VodPlaylist playlist, CancellationT // Fetch logo if (attributes.ContainsKey("tvg-logo")) { - _logger.Debug("Found tvg-logo: {0}", attributes["tvg-logo"]); + _logger.Debug("[VOD] Found tvg-logo: {0}", attributes["tvg-logo"]); Uri.TryCreate(attributes["tvg-logo"], UriKind.Absolute, out imgUri); } var imageUrl = (imgUri != null) ? imgUri.ToString() : null; - _logger.Debug("Adding: {0}, stream playlistUrl: {0}, image: {0}", attributes["tvg-name"], streamUrl, imageUrl); + _logger.Debug("[VOD] Adding: {0}, stream playlistUrl: {0}, image: {0}", attributes["tvg-name"], streamUrl, imageUrl); var media = new Media() { diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Project/Parser/obj/Debug/DesignTimeResolveAssemblyReferences.cache similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/DesignTimeResolveAssemblyReferences.cache rename to Project/Parser/obj/Debug/DesignTimeResolveAssemblyReferences.cache diff --git a/Project/Parser/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Project/Parser/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..cec6024 Binary files /dev/null and b/Project/Parser/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.csproj.FileListAbsolute.txt b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.csproj.FileListAbsolute.txt similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.csproj.FileListAbsolute.txt rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.csproj.FileListAbsolute.txt diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.csprojResolveAssemblyReference.cache b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.csprojResolveAssemblyReference.cache similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteContent.csprojResolveAssemblyReference.cache rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.csprojResolveAssemblyReference.cache diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteContent.dll b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.dll similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteContent.dll rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.dll diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteContent.pdb b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.pdb similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteContent.pdb rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteContent.pdb diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csproj.FileListAbsolute.txt b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csproj.FileListAbsolute.txt similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csproj.FileListAbsolute.txt rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csproj.FileListAbsolute.txt diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csprojResolveAssemblyReference.cache b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csprojResolveAssemblyReference.cache similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csprojResolveAssemblyReference.cache rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.csprojResolveAssemblyReference.cache diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteVideos.dll b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.dll similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteVideos.dll rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.dll diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteVideos.pdb b/Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.pdb similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.RemoteVideos.pdb rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.RemoteVideos.pdb diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.csproj.FileListAbsolute.txt b/Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.csproj.FileListAbsolute.txt similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.csproj.FileListAbsolute.txt rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.csproj.FileListAbsolute.txt diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.csprojResolveAssemblyReference.cache b/Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.csprojResolveAssemblyReference.cache similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.VOD.csprojResolveAssemblyReference.cache rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.csprojResolveAssemblyReference.cache diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.VOD.dll b/Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.dll similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.VOD.dll rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.dll diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.VOD.pdb b/Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.pdb similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/MediaBrowser.Plugin.VOD.pdb rename to Project/Parser/obj/Debug/MediaBrowser.Plugin.VOD.pdb diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CopyComplete similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs rename to Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CopyComplete diff --git a/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..4c9f940 --- /dev/null +++ b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +f24a29458bcc212ac0958b32514457f8e649630a diff --git a/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csprojAssemblyReference.cache b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csprojAssemblyReference.cache new file mode 100644 index 0000000..bd5ee20 Binary files /dev/null and b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.csprojAssemblyReference.cache differ diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.dll b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.dll similarity index 97% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.dll rename to Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.dll index c2cd0f7..2296243 100644 Binary files a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.dll and b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.dll differ diff --git a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.pdb b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.pdb similarity index 66% rename from MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.pdb rename to Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.pdb index 40722db..cccf71d 100644 Binary files a/MediaBrowser.Plugin.RemoteVideos/bin/Debug/Pecee.Emby.Plugin.Vod.pdb and b/Project/Parser/obj/Debug/Pecee.Emby.Plugin.Vod.pdb differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CopyComplete similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs rename to Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CopyComplete diff --git a/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..bf04f28 --- /dev/null +++ b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +3f10fce9ecbfa332f8ad7aa8f86e289ea062d1f6 diff --git a/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a0d0325 --- /dev/null +++ b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt @@ -0,0 +1,10 @@ +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Plugin.Emby.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Plugin.Emby.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Common.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Controller.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Model.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csproj.CopyComplete +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.pdb diff --git a/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache new file mode 100644 index 0000000..7025854 Binary files /dev/null and b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache differ diff --git a/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.dll b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.dll new file mode 100644 index 0000000..cc9ed07 Binary files /dev/null and b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.dll differ diff --git a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.pdb b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.pdb similarity index 63% rename from MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.pdb rename to Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.pdb index 65caa2a..0bf59d3 100644 Binary files a/MediaBrowser.Plugin.RemoteVideos/obj/Debug/MediaBrowser.Plugin.RemoteVideos.pdb and b/Project/Parser/obj/Debug/Pecee.Plugin.Emby.Vod.pdb differ diff --git a/Project/Parser/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Project/Parser/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/Parser/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Project/Parser/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/Parser/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Project/Parser/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/Parser/obj/Debug/build.force b/Project/Parser/obj/Debug/build.force new file mode 100644 index 0000000..e69de29 diff --git a/Project/Parser/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt b/Project/Parser/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..cfef348 --- /dev/null +++ b/Project/Parser/obj/Debug/pecee.emby.plugin.vod.csproj.FileListAbsolute.txt @@ -0,0 +1,17 @@ +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.dll +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.pdb +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Common.dll +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Controller.dll +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Model.dll +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.dll +D:\Visual Studio\emby.plugin.vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Common.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Controller.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\bin\Debug\MediaBrowser.Model.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.csprojAssemblyReference.cache +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.csproj.CopyComplete +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\MediaBrowser.Plugin.RemoteVideos\obj\Debug\Pecee.Emby.Plugin.Vod.pdb diff --git a/Project/Plugin.cs b/Project/Plugin.cs new file mode 100644 index 0000000..54cf452 --- /dev/null +++ b/Project/Plugin.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Plugins; +using MediaBrowser.Model.Serialization; +using Pecee.Emby.Plugin.Vod.Configuration; +using Pecee.Emby.Plugin.Vod.Entities; +using Pecee.Emby.Plugin.Vod.Folder; +using Pecee.Emby.Plugin.Vod.Models; + +namespace Pecee.Emby.Plugin.Vod +{ + public class Plugin : BasePlugin, IHasWebPages + { + + public static Plugin Instance { get; private set; } + + public override string Name => PluginConfiguration.Name; + + public override string Description => PluginConfiguration.Description; + + public ILogger Logger { get; } + public ILibraryManager LibraryManager { get; } + + public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer, ILogManager logger, ILibraryManager libraryManager) : base(applicationPaths, xmlSerializer) + { + Instance = this; + Logger = logger.GetLogger(PluginConfiguration.Name); + LibraryManager = libraryManager; + + } + + public IEnumerable GetPages() + { + return new[] + { + new PluginPageInfo + { + Name = "vod.config", + EmbeddedResourcePath = GetType().Namespace + ".Configuration.configPage.html" + }, + }; + } + + public override void OnUninstalling() + { + + // Cleanup + Logger.Debug("[VOD] Start uninstall cleanup"); + + var types = new [] + { + typeof(VodPlaylist), typeof(Channel), typeof(Media), typeof(ChannelFolder) + }; + + foreach (var playlist in LibraryManager.GetItemList(new InternalItemsQuery(), false).Where(i => types.Contains(i.GetType())).ToList()) + { + Logger.Debug("[VOD] Removing playlist: {0}", playlist.Name); + + LibraryManager.DeleteItem(playlist, new DeleteOptions() + { + DeleteFileLocation = false, + DeleteFromExternalProvider = true, + }, true); + } + + Logger.Debug("[VOD] Finished uninstall cleanup"); + + base.OnUninstalling(); + } + + public static DynamicImageResponse GetImage(string name) + { + var type = typeof(Plugin); + var path = String.Format("{0}.Images.{1}.png", type.Namespace, name); + return new DynamicImageResponse + { + Format = ImageFormat.Png, + HasImage = true, + Stream = type.GetTypeInfo().Assembly.GetManifestResourceStream(path) + }; + } + + } +} diff --git a/Project/Project.csproj b/Project/Project.csproj new file mode 100644 index 0000000..1998fce --- /dev/null +++ b/Project/Project.csproj @@ -0,0 +1,135 @@ + + + + + Debug + AnyCPU + {49954555-C42F-4E6B-A7B7-0A0A2008A9CD} + Library + Properties + Pecee.Emby.Plugin.Vod + Pecee.Emby.Plugin.Vod + v4.7.2 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\packages\MediaBrowser.Common.3.5.0\lib\netstandard2.0\MediaBrowser.Common.dll + + + ..\packages\MediaBrowser.Server.Core.3.5.0\lib\netstandard2.0\MediaBrowser.Controller.dll + + + ..\packages\MediaBrowser.Common.3.5.0\lib\netstandard2.0\MediaBrowser.Model.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SET destination="%25AppData%25\Emby-Server\programdata\plugins\" +echo Copying to %25destination%25 +xcopy "$(TargetPath)" %25destination%25 /y + + \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj.user b/Project/Project.csproj.user similarity index 71% rename from MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj.user rename to Project/Project.csproj.user index ca1d04b..6cbe588 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Pecee.Emby.Plugin.Vod.csproj.user +++ b/Project/Project.csproj.user @@ -1,5 +1,5 @@  - + ProjectFiles diff --git a/MediaBrowser.Plugin.RemoteVideos/Properties/AssemblyInfo.cs b/Project/Properties/AssemblyInfo.cs similarity index 96% rename from MediaBrowser.Plugin.RemoteVideos/Properties/AssemblyInfo.cs rename to Project/Properties/AssemblyInfo.cs index 54f78b5..c332870 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Properties/AssemblyInfo.cs +++ b/Project/Properties/AssemblyInfo.cs @@ -25,6 +25,6 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyVersion("2.0.0.0")] [assembly: ComVisible(false)] [assembly: Guid("7A54F58C-F05E-4BFB-AD64-7E92FAEB0DA2")] \ No newline at end of file diff --git a/MediaBrowser.Plugin.RemoteVideos/Scheduler/PlaylistLibrarySync.cs b/Project/Scheduler/PlaylistLibrarySync.cs similarity index 69% rename from MediaBrowser.Plugin.RemoteVideos/Scheduler/PlaylistLibrarySync.cs rename to Project/Scheduler/PlaylistLibrarySync.cs index 73b0fa7..9e289e6 100644 --- a/MediaBrowser.Plugin.RemoteVideos/Scheduler/PlaylistLibrarySync.cs +++ b/Project/Scheduler/PlaylistLibrarySync.cs @@ -20,12 +20,10 @@ namespace Pecee.Emby.Plugin.Vod.Scheduler { public class PlaylistLibrarySync : IScheduledTask { - private readonly ILogger _logger; - private readonly ILibraryManager _libraryManager; private readonly IProviderManager _providerManager; private readonly M3UParser _m3UParser; - public string Name => "Video on Demand Playlist"; + public string Name => "Video on Demand Playlist Sync"; public string Key => "VodPlaylistLibrarySync"; @@ -33,46 +31,47 @@ public class PlaylistLibrarySync : IScheduledTask public string Category => "Library"; + private readonly ILogger _logger = Plugin.Instance.Logger; + private readonly ILibraryManager _libraryManager = Plugin.Instance.LibraryManager; + public PlaylistLibrarySync( - ILogManager logger, - ILibraryManager libraryManager, IProviderManager providerManager, M3UParser m3UParser ) { - _libraryManager = libraryManager; - _logger = logger.GetLogger(PluginConfiguration.Name); + _providerManager = providerManager; _m3UParser = m3UParser; } public async Task Cleanup(PlaylistConfig[] playlists, CancellationToken cancellationToken) { - _logger.Debug("Cleaning up old and removed items"); + _logger.Info("[VOD] Cleaning up old and removed items"); var deleteItems = _libraryManager.GetUserRootFolder() .RecursiveChildren.OfType() .Where(p => p.Id == Guid.Empty || p.IdentifierId == Guid.Empty || - playlists.FirstOrDefault(p1 => p1.IdentifierId == p.IdentifierId) == null) + (playlists.Length > 0 && playlists.FirstOrDefault(p1 => p1.IdentifierId == p.IdentifierId) == null) || + playlists.Length == 0) .Cast().ToList(); - _logger.Info("Found {0} playlists to remove", deleteItems.Count); + _logger.Info("[VOD] Found {0} playlists to remove", deleteItems.Count); var mediaItems = _libraryManager.GetUserRootFolder() .RecursiveChildren.OfType() - .Where(p1 => p1.Id == Guid.Empty || p1.IdentifierId == Guid.Empty || playlists.FirstOrDefault(p2 => p2.IdentifierId == p1.ParentId) != null).Cast().ToList(); + .Where(p1 => p1.Id == Guid.Empty || p1.IdentifierId == Guid.Empty || playlists.FirstOrDefault(p2 => p2.IdentifierId == p1.ParentId) != null || playlists.Length == 0).Cast().ToList(); deleteItems.AddRange(mediaItems); - _logger.Info("Found {0} mediaItems to remove", mediaItems.Count); + _logger.Info("[VOD] Found {0} items to remove", mediaItems.Count); foreach (BaseItem item in deleteItems) { - _logger.Debug("Removing dead item: {0}, id: {1}, parentId: {2}", item.Name, item.Id, item.ParentId); - await item.Delete(new DeleteOptions() + _logger.Debug("[VOD] Removing item: {0}, id: {1}, parentId: {2}", item.Name, item.Id, item.ParentId); + _libraryManager.DeleteItem(item, new DeleteOptions() { - DeleteFileLocation = true - }); + DeleteFileLocation = true + }, true); } } @@ -85,14 +84,14 @@ public async Task Execute(CancellationToken cancellationToken, IProgress // No point going further if we don't have users. if (playlists.Length == 0) { - _logger.Info("No internal playlists added"); + _logger.Info("[VOD] No internal playlists added"); return; } - _logger.Info("Library sync started"); + _logger.Info("[VOD] Library sync starting"); var existingPlaylists = - _libraryManager.GetUserRootFolder() + _libraryManager.GetUserRootFolder() .RecursiveChildren.OfType() .Where(p1 => playlists.FirstOrDefault(p2 => p2.IdentifierId == p1.IdentifierId) != null) .ToList(); @@ -107,16 +106,16 @@ public async Task Execute(CancellationToken cancellationToken, IProgress if (existingPlaylist != null) { - // UPDATE - _logger.Debug("{0}: playlist with id {1} and identifier {2} found, updating...", existingPlaylist.Name, existingPlaylist.Id, existingPlaylist.IdentifierId); - await existingPlaylist.Merge(existingPlaylist); + // UPDATE + _logger.Debug("[VOD] {0}: playlist with id {1} and identifier {2} found, updating...", existingPlaylist.Name, existingPlaylist.Id, existingPlaylist.IdentifierId); + existingPlaylist.Merge(existingPlaylist); } else { - // CREATE - _logger.Debug("{0}: playlist with identifier {1} not found, creating...", playlist.Name, playlist.IdentifierId); + // CREATE + _logger.Debug("[VOD] {0}: playlist with identifier {1} not found, creating...", playlist.Name, playlist.IdentifierId); playlist.Id = _libraryManager.GetNewItemId(playlist.IdentifierId.ToString(), typeof(VodPlaylist)); - await _libraryManager.GetUserRootFolder().AddChild(playlist, cancellationToken).ConfigureAwait(false); + _libraryManager.GetUserRootFolder().AddChild(playlist, cancellationToken); } var innerProgress = new ActionableProgress(); @@ -130,17 +129,17 @@ public async Task Execute(CancellationToken cancellationToken, IProgress } progress.Report(100); - _libraryManager.QueueLibraryScan(); + _libraryManager.QueueLibraryScan(); } private async Task SyncMedia(VodPlaylist playlist, IProgress progress, CancellationToken cancellationToken) { - _logger.Info("{0}: parsing remote playlist: {1}", playlist.Name, playlist.PlaylistUrl); + _logger.Info("[VOD] {0}: parsing remote playlist: {1}", playlist.Name, playlist.PlaylistUrl); List mediaItems = await _m3UParser.GetMediaItems(playlist, cancellationToken); var existingMediaItems = - _libraryManager.GetUserRootFolder() + _libraryManager.GetUserRootFolder() .RecursiveChildren.OfType() .Where(p1 => mediaItems.FirstOrDefault(p2 => p2.IdentifierId == p1.IdentifierId) != null) .ToList(); @@ -154,10 +153,10 @@ private async Task SyncMedia(VodPlaylist playlist, IProgress progress, C foreach (var item in deleteLocally) { - await item.Delete(new DeleteOptions() - { - DeleteFileLocation = true - }); + _libraryManager.DeleteItem(item, new DeleteOptions() + { + DeleteFileLocation = true + }, true); } } @@ -174,17 +173,17 @@ await item.Delete(new DeleteOptions() if (existingMediaItem != null) { - // UPDATE - _logger.Debug("{0}: found item with id {1} and identifier {2}, updating...", playlist.Name, existingMediaItem.Id, existingMediaItem.IdentifierId); + // UPDATE + _logger.Debug("[VOD] {0}: found item with id {1} and identifier {2}, updating...", playlist.Name, existingMediaItem.Id, existingMediaItem.IdentifierId); await existingMediaItem.Merge(vodItem); await RefreshMetaData(vodItem, cancellationToken).ConfigureAwait(false); } else { - // CREATE - _logger.Debug("{0}: media {1} with identifier {2} not found, adding...", playlist.Name, vodItem.Name, vodItem.IdentifierId); + // CREATE + _logger.Debug("[VOD] {0}: media {1} with identifier {2} not found, adding...", playlist.Name, vodItem.Name, vodItem.IdentifierId); vodItem.Id = _libraryManager.GetNewItemId(vodItem.IdentifierId.ToString(), typeof(VodMovie)); - await playlist.AddChild(vodItem, cancellationToken).ConfigureAwait(false); + playlist.AddChild(vodItem, cancellationToken); await RefreshMetaData(vodItem, cancellationToken).ConfigureAwait(false); await vodItem.RefreshMetadata(cancellationToken).ConfigureAwait(false); @@ -192,8 +191,9 @@ await item.Delete(new DeleteOptions() } catch (Exception e) { - _logger.ErrorException(e.Message, e); - } + _logger.ErrorException("[VOD] Error: " + e.Message, e); + + } i++; } @@ -203,7 +203,7 @@ await item.Delete(new DeleteOptions() private async Task RefreshMetaData(BaseItem item, CancellationToken cancellationToken) { - _logger.Info("{0}: Refreshing meta-data", item.Name); + _logger.Info("[VOD] {0}: Refreshing meta-data", item.Name); // TODO: refresh meta-data for multiple content-types @@ -221,11 +221,11 @@ private async Task RefreshMetaData(BaseItem item, CancellationToken ca if (metaResult == null) { - _logger.Debug("{0}: Meta-data not found", item.Name); + _logger.Debug("[VOD] {0}: Meta-data not found", item.Name); return item; } - _logger.Debug("{0}: Found meta-data", item.Name); + _logger.Debug("[VOD] {0}: Found meta-data", item.Name); item.Name = metaResult.Name; item.Overview = metaResult.Overview; @@ -248,7 +248,7 @@ private async Task RefreshMetaData(BaseItem item, CancellationToken ca newImages.AddRange(item.ImageInfos); } - item.ImageInfos = newImages; + item.ImageInfos = newImages.ToArray(); } return item; diff --git a/MediaBrowser.Plugin.RemoteVideos/View/UserViewManager.cs b/Project/View/UserViewManager.cs similarity index 80% rename from MediaBrowser.Plugin.RemoteVideos/View/UserViewManager.cs rename to Project/View/UserViewManager.cs index b095641..6bb5291 100644 --- a/MediaBrowser.Plugin.RemoteVideos/View/UserViewManager.cs +++ b/Project/View/UserViewManager.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace Pecee.Emby.Plugin.Vod.View +namespace Pecee.Plugin.Vod.View { class UserViewManager { diff --git a/Project/app.config b/Project/app.config new file mode 100644 index 0000000..f6e7dca --- /dev/null +++ b/Project/app.config @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Project/bin/Debug/MediaBrowser.Common.dll b/Project/bin/Debug/MediaBrowser.Common.dll new file mode 100644 index 0000000..4e489b1 Binary files /dev/null and b/Project/bin/Debug/MediaBrowser.Common.dll differ diff --git a/Project/bin/Debug/MediaBrowser.Controller.dll b/Project/bin/Debug/MediaBrowser.Controller.dll new file mode 100644 index 0000000..bc78ffb Binary files /dev/null and b/Project/bin/Debug/MediaBrowser.Controller.dll differ diff --git a/Project/bin/Debug/MediaBrowser.Model.dll b/Project/bin/Debug/MediaBrowser.Model.dll new file mode 100644 index 0000000..6d0dccd Binary files /dev/null and b/Project/bin/Debug/MediaBrowser.Model.dll differ diff --git a/Project/bin/Debug/Pecee.Emby.Plugin.Vod.dll b/Project/bin/Debug/Pecee.Emby.Plugin.Vod.dll new file mode 100644 index 0000000..49d9674 Binary files /dev/null and b/Project/bin/Debug/Pecee.Emby.Plugin.Vod.dll differ diff --git a/Project/bin/Debug/Pecee.Emby.Plugin.Vod.pdb b/Project/bin/Debug/Pecee.Emby.Plugin.Vod.pdb new file mode 100644 index 0000000..39e4547 Binary files /dev/null and b/Project/bin/Debug/Pecee.Emby.Plugin.Vod.pdb differ diff --git a/Project/bin/Release/MediaBrowser.Common.dll b/Project/bin/Release/MediaBrowser.Common.dll new file mode 100644 index 0000000..4e489b1 Binary files /dev/null and b/Project/bin/Release/MediaBrowser.Common.dll differ diff --git a/Project/bin/Release/MediaBrowser.Controller.dll b/Project/bin/Release/MediaBrowser.Controller.dll new file mode 100644 index 0000000..bc78ffb Binary files /dev/null and b/Project/bin/Release/MediaBrowser.Controller.dll differ diff --git a/Project/bin/Release/MediaBrowser.Model.dll b/Project/bin/Release/MediaBrowser.Model.dll new file mode 100644 index 0000000..6d0dccd Binary files /dev/null and b/Project/bin/Release/MediaBrowser.Model.dll differ diff --git a/Project/bin/Release/Pecee.Emby.Plugin.Vod.dll b/Project/bin/Release/Pecee.Emby.Plugin.Vod.dll new file mode 100644 index 0000000..37a6780 Binary files /dev/null and b/Project/bin/Release/Pecee.Emby.Plugin.Vod.dll differ diff --git a/Project/bin/Release/Pecee.Emby.Plugin.Vod.pdb b/Project/bin/Release/Pecee.Emby.Plugin.Vod.pdb new file mode 100644 index 0000000..f9368f5 Binary files /dev/null and b/Project/bin/Release/Pecee.Emby.Plugin.Vod.pdb differ diff --git a/MediaBrowser.Plugin.RemoteVideos/dashboard-ui/vodmovie.html b/Project/dashboard-ui/vodmovie.html similarity index 100% rename from MediaBrowser.Plugin.RemoteVideos/dashboard-ui/vodmovie.html rename to Project/dashboard-ui/vodmovie.html diff --git a/Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..9bbc52d Binary files /dev/null and b/Project/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CopyComplete b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..f1f2a72 --- /dev/null +++ b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +59c2814972a85e6e2d4169c4bf46586c0bb25b04 diff --git a/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..0aecc06 --- /dev/null +++ b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Common.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Controller.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Model.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Theater.Interfaces.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Theater.Presentation.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Microsoft.Expression.Effects.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Microsoft.Expression.Interactions.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Emby.Plugin.Vod.csproj.CopyComplete +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Emby.Plugin.Vod.pdb diff --git a/Project/obj/Debug/Pecee.Emby.Plugin.Vod.dll b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.dll new file mode 100644 index 0000000..49d9674 Binary files /dev/null and b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.dll differ diff --git a/Project/obj/Debug/Pecee.Emby.Plugin.Vod.pdb b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.pdb new file mode 100644 index 0000000..39e4547 Binary files /dev/null and b/Project/obj/Debug/Pecee.Emby.Plugin.Vod.pdb differ diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CopyComplete b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..8260443 --- /dev/null +++ b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +257cddf17bbc0a2b91edd2e7b47d1366905e261e diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a61d976 --- /dev/null +++ b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Plugin.Emby.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Pecee.Plugin.Emby.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Theater.Interfaces.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\MediaBrowser.Theater.Presentation.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Microsoft.Expression.Effects.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Debug\Microsoft.Expression.Interactions.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csproj.CoreCompileInputs.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csproj.CopyComplete +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Debug\Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache new file mode 100644 index 0000000..f49659f Binary files /dev/null and b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.csprojAssemblyReference.cache differ diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.dll b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.dll new file mode 100644 index 0000000..148d05d Binary files /dev/null and b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.dll differ diff --git a/Project/obj/Debug/Pecee.Plugin.Emby.Vod.pdb b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.pdb new file mode 100644 index 0000000..4e96e16 Binary files /dev/null and b/Project/obj/Debug/Pecee.Plugin.Emby.Vod.pdb differ diff --git a/Project/obj/Debug/Project.csproj.CopyComplete b/Project/obj/Debug/Project.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Debug/Project.csproj.CoreCompileInputs.cache b/Project/obj/Debug/Project.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..2142880 --- /dev/null +++ b/Project/obj/Debug/Project.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +b43cf14c7b9078dec8bc7dd76460ba50023cb672 diff --git a/Project/obj/Debug/Project.csproj.FileListAbsolute.txt b/Project/obj/Debug/Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..84ab3de --- /dev/null +++ b/Project/obj/Debug/Project.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\bin\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\bin\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Common.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Controller.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Model.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Project.csproj.CoreCompileInputs.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Project.csproj.CopyComplete +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Project.csprojAssemblyReference.cache +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Debug\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Common.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Controller.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Debug\MediaBrowser.Model.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Project.csproj.CoreCompileInputs.cache +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Project.csproj.CopyComplete +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Debug\Pecee.Emby.Plugin.Vod.pdb diff --git a/Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Project/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Project/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Project/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Project/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..46c5638 Binary files /dev/null and b/Project/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.CopyComplete b/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache b/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..8260443 --- /dev/null +++ b/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +257cddf17bbc0a2b91edd2e7b47d1366905e261e diff --git a/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt b/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..df1f32f --- /dev/null +++ b/Project/obj/Release/Pecee.Emby.Plugin.Vod.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\MediaBrowser.Common.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\MediaBrowser.Controller.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\MediaBrowser.Model.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\MediaBrowser.Theater.Interfaces.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\MediaBrowser.Theater.Presentation.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\Microsoft.Expression.Effects.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\bin\Release\Microsoft.Expression.Interactions.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Release\Pecee.Emby.Plugin.Vod.csproj.CoreCompileInputs.cache +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Release\Pecee.Emby.Plugin.Vod.csproj.CopyComplete +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Release\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\VOD\Pecee.Plugin.Emby.Vod\Pecee.Plugin.Emby.Vod\obj\Release\Pecee.Emby.Plugin.Vod.pdb diff --git a/Project/obj/Release/Pecee.Emby.Plugin.Vod.dll b/Project/obj/Release/Pecee.Emby.Plugin.Vod.dll new file mode 100644 index 0000000..37a6780 Binary files /dev/null and b/Project/obj/Release/Pecee.Emby.Plugin.Vod.dll differ diff --git a/Project/obj/Release/Pecee.Emby.Plugin.Vod.pdb b/Project/obj/Release/Pecee.Emby.Plugin.Vod.pdb new file mode 100644 index 0000000..f9368f5 Binary files /dev/null and b/Project/obj/Release/Pecee.Emby.Plugin.Vod.pdb differ diff --git a/Project/obj/Release/Project.csproj.CopyComplete b/Project/obj/Release/Project.csproj.CopyComplete new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Release/Project.csproj.CoreCompileInputs.cache b/Project/obj/Release/Project.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..2142880 --- /dev/null +++ b/Project/obj/Release/Project.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +b43cf14c7b9078dec8bc7dd76460ba50023cb672 diff --git a/Project/obj/Release/Project.csproj.FileListAbsolute.txt b/Project/obj/Release/Project.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..b9b66c9 --- /dev/null +++ b/Project/obj/Release/Project.csproj.FileListAbsolute.txt @@ -0,0 +1,9 @@ +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Release\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Release\Pecee.Emby.Plugin.Vod.pdb +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Release\MediaBrowser.Common.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Release\MediaBrowser.Controller.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\bin\Release\MediaBrowser.Model.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Release\Project.csproj.CoreCompileInputs.cache +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Release\Project.csproj.CopyComplete +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Release\Pecee.Emby.Plugin.Vod.dll +E:\Visual Studio\Pecee.Plugin.Emby.Vod\Project\obj\Release\Pecee.Emby.Plugin.Vod.pdb diff --git a/Project/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Project/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Project/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Project/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Project/packages.config b/Project/packages.config new file mode 100644 index 0000000..c267a6c --- /dev/null +++ b/Project/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Project/thumb.jpg b/Project/thumb.jpg new file mode 100644 index 0000000..22212e5 Binary files /dev/null and b/Project/thumb.jpg differ diff --git a/Project/thumb.png b/Project/thumb.png new file mode 100644 index 0000000..052819e Binary files /dev/null and b/Project/thumb.png differ diff --git a/packages/MediaBrowser.Common.3.0.695/MediaBrowser.Common.3.0.695.nupkg b/packages/MediaBrowser.Common.3.0.695/MediaBrowser.Common.3.0.695.nupkg deleted file mode 100644 index 11ca191..0000000 Binary files a/packages/MediaBrowser.Common.3.0.695/MediaBrowser.Common.3.0.695.nupkg and /dev/null differ diff --git a/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Common.dll b/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Common.dll deleted file mode 100644 index 4efc6bc..0000000 Binary files a/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Common.dll and /dev/null differ diff --git a/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Model.dll b/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Model.dll deleted file mode 100644 index c778f8e..0000000 Binary files a/packages/MediaBrowser.Common.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Model.dll and /dev/null differ diff --git a/packages/MediaBrowser.Common.3.5.0/.signature.p7s b/packages/MediaBrowser.Common.3.5.0/.signature.p7s new file mode 100644 index 0000000..cc2117b Binary files /dev/null and b/packages/MediaBrowser.Common.3.5.0/.signature.p7s differ diff --git a/packages/MediaBrowser.Common.3.5.0/MediaBrowser.Common.3.5.0.nupkg b/packages/MediaBrowser.Common.3.5.0/MediaBrowser.Common.3.5.0.nupkg new file mode 100644 index 0000000..3ecb8d9 Binary files /dev/null and b/packages/MediaBrowser.Common.3.5.0/MediaBrowser.Common.3.5.0.nupkg differ diff --git a/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Common.dll b/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Common.dll new file mode 100644 index 0000000..4e489b1 Binary files /dev/null and b/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Common.dll differ diff --git a/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Model.dll b/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Model.dll new file mode 100644 index 0000000..6d0dccd Binary files /dev/null and b/packages/MediaBrowser.Common.3.5.0/lib/netstandard2.0/MediaBrowser.Model.dll differ diff --git a/packages/MediaBrowser.Server.Core.3.0.695/MediaBrowser.Server.Core.3.0.695.nupkg b/packages/MediaBrowser.Server.Core.3.0.695/MediaBrowser.Server.Core.3.0.695.nupkg deleted file mode 100644 index 9aaade0..0000000 Binary files a/packages/MediaBrowser.Server.Core.3.0.695/MediaBrowser.Server.Core.3.0.695.nupkg and /dev/null differ diff --git a/packages/MediaBrowser.Server.Core.3.0.695/lib/net45/MediaBrowser.Controller.dll b/packages/MediaBrowser.Server.Core.3.0.695/lib/net45/MediaBrowser.Controller.dll deleted file mode 100644 index 69afa6f..0000000 Binary files a/packages/MediaBrowser.Server.Core.3.0.695/lib/net45/MediaBrowser.Controller.dll and /dev/null differ diff --git a/packages/MediaBrowser.Server.Core.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Controller.dll b/packages/MediaBrowser.Server.Core.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Controller.dll deleted file mode 100644 index 69afa6f..0000000 Binary files a/packages/MediaBrowser.Server.Core.3.0.695/lib/portable-net45+win8+wpa81/MediaBrowser.Controller.dll and /dev/null differ diff --git a/packages/MediaBrowser.Server.Core.3.5.0/.signature.p7s b/packages/MediaBrowser.Server.Core.3.5.0/.signature.p7s new file mode 100644 index 0000000..fe957c9 Binary files /dev/null and b/packages/MediaBrowser.Server.Core.3.5.0/.signature.p7s differ diff --git a/packages/MediaBrowser.Server.Core.3.5.0/MediaBrowser.Server.Core.3.5.0.nupkg b/packages/MediaBrowser.Server.Core.3.5.0/MediaBrowser.Server.Core.3.5.0.nupkg new file mode 100644 index 0000000..3b241dd Binary files /dev/null and b/packages/MediaBrowser.Server.Core.3.5.0/MediaBrowser.Server.Core.3.5.0.nupkg differ diff --git a/packages/MediaBrowser.Server.Core.3.5.0/lib/netstandard2.0/MediaBrowser.Controller.dll b/packages/MediaBrowser.Server.Core.3.5.0/lib/netstandard2.0/MediaBrowser.Controller.dll new file mode 100644 index 0000000..bc78ffb Binary files /dev/null and b/packages/MediaBrowser.Server.Core.3.5.0/lib/netstandard2.0/MediaBrowser.Controller.dll differ