Inital commit of Vimeo and PushBullet both need work!

This commit is contained in:
Stephen Maunder 2014-05-17 16:34:32 +01:00
parent 70dc4f2d34
commit 030395f6f7
50 changed files with 1660 additions and 94 deletions

View File

@ -35,17 +35,17 @@
<Reference Include="HtmlAgilityPack">
<HintPath>Assets\Assemblies\HtmlAgilityPack.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Common, Version=3.0.5231.22157, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.357\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5231.22157, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.357\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5231.22157, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.357\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.357" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.357" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -32,17 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -32,17 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5228.28548, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -33,13 +33,13 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller">
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -32,14 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller">
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -32,14 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller">
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Logging;
using MediaBrowser.Plugins.PushOverNotifications.Configuration;
using ServiceStack;
namespace MediaBrowser.Plugins.PushOverNotifications.Api
{
[Route("/Notification/Pushover/Test/{UserID}", "POST", Summary = "Tests Pushover")]
public class TestNotification : IReturnVoid
{
[ApiMember(Name = "UserID", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string UserID { get; set; }
}
class ServerApiEndpoints : IRestfulService
{
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
public ServerApiEndpoints(ILogManager logManager, IHttpClient httpClient)
{
_logger = logManager.GetLogger(GetType().Name);
_httpClient = httpClient;
}
private PushOverOptions GetOptions(String userID)
{
return Plugin.Instance.Configuration.Options
.FirstOrDefault(i => string.Equals(i.MediaBrowserUserId, userID, StringComparison.OrdinalIgnoreCase));
}
public object Post(TestNotification request)
{
var options = GetOptions(request.UserID);
var parameters = new Dictionary<string, string>
{
{"token", options.Token},
{"user", options.UserKey},
{"title", "Test Notification" },
{"message", "This is a test notification from MediaBrowser"}
};
_logger.Debug("Pushover <TEST> to {0} - {1}", options.Token, options.UserKey);
return _httpClient.Post(new HttpRequestOptions { Url = "https://api.pushover.net/1/messages.json" }, parameters);
}
}
}

View File

@ -0,0 +1,41 @@
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Plugins;
using System.IO;
namespace MediaBrowser.Plugins.PushBulletNotifications.Configuration
{
class ConfigPage : IPluginConfigurationPage
{
/// <summary>
/// Gets My Option.
/// </summary>
/// <value>The Option.</value>
public string Name
{
get { return Plugin.Name; }
}
/// <summary>
/// Gets the HTML stream.
/// </summary>
/// <returns>Stream.</returns>
public Stream GetHtmlStream()
{
return GetType().Assembly.GetManifestResourceStream(GetType().Namespace + ".config.html");
}
/// <summary>
/// Gets the type of the configuration page.
/// </summary>
/// <value>The type of the configuration page.</value>
public ConfigurationPageType ConfigurationPageType
{
get { return ConfigurationPageType.PluginConfiguration; }
}
public IPlugin Plugin
{
get { return PushOverNotifications.Plugin.Instance; }
}
}
}

View File

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using MediaBrowser.Model.Plugins;
namespace MediaBrowser.Plugins.PushBulletNotifications.Configuration
{
/// <summary>
/// Class PluginConfiguration
/// </summary>
public class PluginConfiguration : BasePluginConfiguration
{
public PushOverOptions[] Options { get; set; }
public PluginConfiguration()
{
Options = new PushOverOptions[] { };
}
}
public class PushOverOptions
{
public Boolean Enabled { get; set; }
public String UserKey { get; set; }
public String Token { get; set; }
public String DeviceName { get; set; }
public List<Sound> SoundList { get; set; }
public int Priority { get; set; }
public string MediaBrowserUserId { get; set; }
public PushOverOptions()
{
SoundList = new List<Sound>
{
new Sound() {Name = "Pushover", Value = "pushover"},
new Sound() {Name = "Bike", Value = "bike"},
new Sound() {Name = "Bugle", Value = "bugle"}
};
}
}
public class Sound
{
public String Name { get; set; }
public String Value { get; set; }
}
}

View File

@ -0,0 +1,173 @@
<!DOCTYPE html>
<html>
<head>
<title>Pushover Notifications</title>
</head>
<body>
<div data-role="page" class="page type-interior pluginConfigurationPage pushOverConfigurationPage">
<div data-role="content">
<div class="content-primary">
<form class="pushOverConfigurationForm">
<p>To use Pushover register an application at <a href="https://pushover.net/">pushover.net</a></p>
<ul class="ulForm" data-role="listview">
<li>
<label for="selectUser">Configure Pushover notifications for:</label>
<select id="selectUser" data-mini="true"></select>
</li>
<li>
<label for="chkEnablePushOver">Enabled</label>
<input type="checkbox" id="chkEnablePushOver" data-mini="true" />
</li>
<li>
<label for="txtPushOverAuthKey">
Pushover Auth Token:
</label>
<input type="text" id="txtPushOverAuthKey" name="txtPushOverAuthKey" required="required" data-mini="true" />
<div class="fieldDescription">
Auth key for your application
</div>
</li>
<li>
<label for="txtPushOverUserKey">
Pushover User Key:
</label>
<input type="text" id="txtPushOverUserKey" name="txtPushOverUserKey" required="required" data-mini="true" />
<div class="fieldDescription">
User key for your application
</div>
</li>
<li>
<label for="txtPushOverDeviceName">
Pushover Device Name:
</label>
<input type="text" id="txtPushOverDeviceName" name="txtPushOverDeviceName" data-mini="true" />
<div class="fieldDescription">
Device Name for application
</div>
</li>
<li><button type="button" id="testNotification" data-mini="true">Test Notification</button></li>
<li>
<button type="submit" data-theme="b" data-mini="true">Save</button>
<button type="button" onclick="history.back();" data-mini="true">Cancel</button>
</li>
</ul>
</form>
</div>
</div>
<script type="text/javascript">
(function () {
var pluginId = "6C3B6965-C257-47C2-AA02-64457AE21D91";
$('#testNotification').on('click', function (event) {
Dashboard.showLoadingMsg();
ApiClient.getPluginConfiguration(pluginId).done(function (config) {
config.Options.filter(function (c) {
$.ajax({
type: "POST",
url: ApiClient.getUrl("Notification/Pushover/Test/" + c.MediaBrowserUserId)
}).done(function () {
Dashboard.hideLoadingMsg();
});
});
});
});
function loadUserConfig(page, userId) {
Dashboard.showLoadingMsg();
ApiClient.getPluginConfiguration(pluginId).done(function (config) {
var pushOverConfig = config.Options.filter(function (c) {
return userId == c.MediaBrowserUserId;
})[0] || {};
$('#chkEnablePushOver', page).checked(pushOverConfig.Enabled || false).checkboxradio("refresh");
$('#txtPushOverAuthKey', page).val(pushOverConfig.Token || '');
$('#txtPushOverUserKey', page).val(pushOverConfig.UserKey || '');
$('#txtPushOverDeviceName', page).val(pushOverConfig.DeviceName || '');
Dashboard.hideLoadingMsg();
});
}
$('.pushOverConfigurationPage').on('pageinit', function (event) {
var page = this;
$('#selectUser', page).on('change', function () {
loadUserConfig(page, this.value);
});
}).on('pageshow', function (event) {
Dashboard.showLoadingMsg();
var page = this;
ApiClient.getUsers().done(function (users) {
$('#selectUser', page).html(users.map(function (user) {
return '<option value="' + user.Id + '">' + user.Name + '</option>';
})).selectmenu('refresh').trigger('change');
});
Dashboard.hideLoadingMsg();
});
$('.pushOverConfigurationForm').on('submit', function (e) {
Dashboard.showLoadingMsg();
var form = this;
ApiClient.getPluginConfiguration(pluginId).done(function (config) {
var userId = $('#selectUser', form).val();
var pushOverConfig = config.Options.filter(function (c) {
return userId == c.MediaBrowserUserId;
})[0];
if (!pushOverConfig) {
pushOverConfig = {};
config.Options.push(pushOverConfig);
}
pushOverConfig.MediaBrowserUserId = userId;
pushOverConfig.Enabled = $('#chkEnablePushOver', form).checked();
pushOverConfig.Token = $('#txtPushOverAuthKey', form).val();
pushOverConfig.UserKey = $('#txtPushOverUserKey', form).val();
pushOverConfig.DeviceName = $('#txtPushOverDeviceName', form).val();
ApiClient.updatePluginConfiguration(pluginId, config).done(Dashboard.processPluginConfigurationUpdateResult);
});
return false;
});
})();
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D3018C1D-19DD-407E-9A44-304E172599D3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MediaBrowser.Plugins.PushBulletNotifications</RootNamespace>
<AssemblyName>MediaBrowser.Plugins.PushBulletNotifications</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs">
<Link>Properties\SharedVersion.cs</Link>
</Compile>
<Compile Include="Api\ServerApiEntryPoints.cs" />
<Compile Include="Configuration\ConfigPage.cs" />
<Compile Include="Configuration\PluginConfiguration.cs" />
<Compile Include="Notifier.cs" />
<Compile Include="Plugin.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Configuration\config.html" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>xcopy "$(TargetPath)" "$(SolutionDir)\..\MediaBrowser\ProgramData-Server\Plugins\" /y</PostBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,75 @@
using System.Collections.Generic;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Notifications;
using MediaBrowser.Model.Logging;
using MediaBrowser.Plugins.PushBulletNotifications.Configuration;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Plugins.PushBulletNotifications
{
public class Notifier : INotificationService
{
private readonly ILogger _logger;
private readonly IHttpClient _httpClient;
public Notifier(ILogManager logManager, IHttpClient httpClient)
{
_logger = logManager.GetLogger(GetType().Name);
_httpClient = httpClient;
}
public bool IsEnabledForUser(User user)
{
var options = GetOptions(user);
return options != null && IsValid(options) && options.Enabled;
}
private PushOverOptions GetOptions(User user)
{
return Plugin.Instance.Configuration.Options
.FirstOrDefault(i => string.Equals(i.MediaBrowserUserId, user.Id.ToString("N"), StringComparison.OrdinalIgnoreCase));
}
public string Name
{
get { return Plugin.Instance.Name; }
}
public Task SendNotification(UserNotification request, CancellationToken cancellationToken)
{
var options = GetOptions(request.User);
var parameters = new Dictionary<string, string>
{
{"token", options.Token},
{"user", options.UserKey},
};
if (!string.IsNullOrEmpty(options.DeviceName))
parameters.Add("device", options.DeviceName);
if (string.IsNullOrEmpty(request.Description))
parameters.Add("message", request.Name);
else
{
parameters.Add("title", request.Name);
parameters.Add("message", request.Description);
}
_logger.Debug("PushOver to Token : {0} - {1} - {2}", options.Token, options.UserKey, request.Description);
return _httpClient.Post("https://api.pushover.net/1/messages.json", parameters, cancellationToken);
}
private bool IsValid(PushOverOptions options)
{
return !string.IsNullOrEmpty(options.UserKey) &&
!string.IsNullOrEmpty(options.Token);
}
}
}

View File

@ -0,0 +1,46 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Plugins.PushOverNotifications.Configuration;
namespace MediaBrowser.Plugins.PushOverNotifications
{
/// <summary>
/// Class Plugin
/// </summary>
public class Plugin : BasePlugin<PluginConfiguration>
{
public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
: base(applicationPaths, xmlSerializer)
{
Instance = this;
}
/// <summary>
/// Gets the name of the plugin
/// </summary>
/// <value>The name.</value>
public override string Name
{
get { return "Pushover Notifications"; }
}
/// <summary>
/// Gets the description.
/// </summary>
/// <value>The description.</value>
public override string Description
{
get
{
return "Sends notifications via Pushover Service.";
}
}
/// <summary>
/// Gets the instance.
/// </summary>
/// <value>The instance.</value>
public static Plugin Instance { get; private set; }
}
}

View File

@ -0,0 +1,31 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MediaBrowser.Plugins.PushBulletNotifications")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MediaBrowser.Plugins.PushBulletNotifications")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("de228f12-e43e-4bd9-9fc0-2830819c3b92")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -32,14 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller">
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model">
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -35,17 +35,17 @@
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -44,6 +44,8 @@ namespace MediaBrowser.Plugins.SmtpNotifications.Api
UseDefaultCredentials = false
};
if (options.SSL) client.EnableSsl = true;
if (options.UseCredentials)
{
var pw = Encoding.Default.GetString(ProtectedData.Unprotect(Encoding.Default.GetBytes(options.PwData), null, DataProtectionScope.LocalMachine));

View File

@ -32,17 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\packages\ServiceStack.Interfaces.4.0.18\lib\net40\ServiceStack.Interfaces.dll</HintPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -32,17 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -35,17 +35,17 @@
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -0,0 +1,24 @@
using System;
using MediaBrowser.Model.Plugins;
namespace MediaBrowser.Plugins.Vimeo.Configuration
{
/// <summary>
/// Class PluginConfiguration
/// </summary>
public class PluginConfiguration : BasePluginConfiguration
{
public String Username { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="PluginConfiguration" /> class.
/// </summary>
public PluginConfiguration()
: base()
{
}
}
}

View File

@ -0,0 +1,44 @@
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Plugins;
using System.IO;
namespace MediaBrowser.Plugins.Vimeo.Configuration
{
/// <summary>
/// Class TrailerConfigurationPage
/// </summary>
class VimeoConfigurationPage : IPluginConfigurationPage
{
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
public string Name
{
get { return "Vimeo"; }
}
/// <summary>
/// Gets the HTML stream.
/// </summary>
/// <returns>Stream.</returns>
public Stream GetHtmlStream()
{
return GetType().Assembly.GetManifestResourceStream("MediaBrowser.Plugins.Vimeo.Configuration.configPage.html");
}
/// <summary>
/// Gets the type of the configuration page.
/// </summary>
/// <value>The type of the configuration page.</value>
public ConfigurationPageType ConfigurationPageType
{
get { return ConfigurationPageType.PluginConfiguration; }
}
public IPlugin Plugin
{
get { return Vimeo.Plugin.Instance; }
}
}
}

View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html>
<head>
<title>Vimeo</title>
</head>
<body>
<div data-role="page" class="page type-interior pluginConfigurationPage vimeoConfigurationPage">
<div data-role="content">
<div class="content-primary">
<form class="vimeoConfigurationForm">
<ul class="ulForm" data-role="listview">
<li>
<label for="txtVimeoUser">
Vimeo Username:
</label>
<input type="number" id="txtVimeoUser" name="txtVimeoUser" />
<div class="fieldDescription">
Your Vimeo Username
</div>
</li>
<li>
<button type="submit" data-theme="b">Save</button>
<button type="button" onclick="history.back();">Cancel</button>
</li>
</ul>
</form>
</div>
</div>
<script type="text/javascript">
var TrailersConfigurationPage = {
pluginUniqueId: "756f3030-72f7-4606-82a3-7cd1d01c0d85"
};
$('.vimeoConfigurationPage').on('pageshow', function (event) {
Dashboard.showLoadingMsg();
var page = this;
ApiClient.getPluginConfiguration(TrailersConfigurationPage.pluginUniqueId).done(function (config) {
$('#txtVimeoUser', page).val(config.Username || "");
Dashboard.hideLoadingMsg();
});
});
$('.vimeoConfigurationForm').on('submit', function (e) {
Dashboard.showLoadingMsg();
var form = this;
ApiClient.getPluginConfiguration(TrailersConfigurationPage.pluginUniqueId).done(function (config) {
var uname = $('#txtVimeoUser', form).val();
config.Username = uname ? uname : null;
ApiClient.updatePluginConfiguration(TrailersConfigurationPage.pluginUniqueId, config).done(Dashboard.processPluginConfigurationUpdateResult);
});
// Disable default form submission
return false;
});
</script>
</div>
</body>
</html>

View File

@ -0,0 +1,22 @@
using System.Xml;
namespace MediaBrowser.Plugins.Vimeo.Extensions
{
/// <summary>
/// Class XmlExtensions
/// </summary>
public static class XmlExtensions
{
/// <summary>
/// Reads the string safe.
/// </summary>
/// <param name="reader">The reader.</param>
/// <returns>System.String.</returns>
public static string ReadStringSafe(this XmlReader reader)
{
var val = reader.ReadElementContentAsString();
return string.IsNullOrWhiteSpace(val) ? null : val;
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E966032D-3601-44AA-BC6F-94ACFE8840F5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MediaBrowser.Plugins.Vimeo</RootNamespace>
<AssemblyName>MediaBrowser.Plugins.Vimeo</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5228.28548, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="ServiceStack.Text">
<HintPath>..\packages\ServiceStack.Text.4.0.18\lib\net40\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs">
<Link>Properties\SharedVersion.cs</Link>
</Compile>
<Compile Include="VimeoChannelDownloader.cs" />
<Compile Include="VimeoInfo.cs" />
<Compile Include="VimeoListingDownloader.cs" />
<Compile Include="Configuration\PluginConfiguration.cs" />
<Compile Include="Configuration\VimeoConfigurationPage.cs" />
<Compile Include="Extensions\XmlExtensions.cs" />
<Compile Include="Plugin.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VimeoChannel.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Configuration\configPage.html" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Images\primary.jpg" />
<EmbeddedResource Include="Images\thumb.jpg" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>xcopy "$(TargetPath)" "$(SolutionDir)\..\MediaBrowser\ProgramData-Server\Plugins\" /y</PostBuildEvent>
</PropertyGroup>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -0,0 +1,47 @@
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Plugins.Vimeo.Configuration;
using System.Threading;
namespace MediaBrowser.Plugins.Vimeo
{
/// <summary>
/// Class Plugin
/// </summary>
public class Plugin : BasePlugin<PluginConfiguration>
{
public Plugin(IApplicationPaths applicationPaths, IXmlSerializer xmlSerializer)
: base(applicationPaths, xmlSerializer)
{
Instance = this;
}
/// <summary>
/// Gets the name of the plugin
/// </summary>
/// <value>The name.</value>
public override string Name
{
get { return "Vimeo"; }
}
/// <summary>
/// Gets the description.
/// </summary>
/// <value>The description.</value>
public override string Description
{
get
{
return "Vimeo videos for your collection.";
}
}
/// <summary>
/// Gets the instance.
/// </summary>
/// <value>The instance.</value>
public static Plugin Instance { get; private set; }
}
}

View File

@ -0,0 +1,29 @@
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("MediaBrowser.Plugins.Vimeo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("MediaBrowser.Plugins.Vimeo")]
[assembly: AssemblyCopyright("Copyright © 2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("756f3030-72f7-4606-82a3-7cd1d01c0d85")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision

View File

@ -0,0 +1,165 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Plugins.Vimeo
{
public class VimeoChannel : IChannel
{
private readonly IHttpClient _httpClient;
private readonly ILogger _logger;
private IJsonSerializer _jsonSerializer;
public VimeoChannel(IHttpClient httpClient, IJsonSerializer jsonSerializer, ILogManager logManager)
{
_httpClient = httpClient;
_logger = logManager.GetLogger(GetType().Name);
_jsonSerializer = jsonSerializer;
}
public Task<IEnumerable<ChannelItemInfo>> Search(ChannelSearchInfo searchInfo, Controller.Entities.User user, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public async Task<ChannelItemResult> GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken)
{
IEnumerable<ChannelItemInfo> items;
if (query.CategoryId == null)
{
items = await GetChannels(query.CategoryId, cancellationToken).ConfigureAwait(false);
}
else
{
items = await GetChannelItems(cancellationToken).ConfigureAwait(false);
}
return new ChannelItemResult
{
Items = items.ToList()//,
//CacheLength = TimeSpan.FromDays(3)
};
}
private async Task<IEnumerable<ChannelItemInfo>> GetChannels(String catID, CancellationToken cancellationToken)
{
//var downloader = new VimeoChannelDownloader(_logger, _jsonSerializer, _httpClient);
//downloader.GetVimeoChannelList(catID, cancellationToken);
}
private async Task<IEnumerable<ChannelItemInfo>> GetChannelItems(CancellationToken cancellationToken)
{
var downloader = new VimeoListingDownloader(_logger, _jsonSerializer, _httpClient);
var videos = await downloader.GetVimeoList(cancellationToken)
.ConfigureAwait(false);
return videos.Select(i => new ChannelItemInfo
{
ContentType = ChannelMediaContentType.Clip,
ImageUrl = i.Thumbnail,
IsInfiniteStream = false,
MediaType = ChannelMediaType.Video,
Name = i.Name,
Overview = i.Description,
Type = ChannelItemType.Media,
Id = i.URL.GetMD5().ToString("N"),
PremiereDate = i.UploadDate,
MediaSources = new List<ChannelMediaInfo>
{
new ChannelMediaInfo
{
Path = i.URL,
VideoBitrate = i.VideoBitRate,
Height = i.VideoHeight,
Width = i.VideoWidth
}
}
});
}
public Task<DynamicImageResponse> GetChannelImage(ImageType type, CancellationToken cancellationToken)
{
switch (type)
{
case ImageType.Primary:
case ImageType.Thumb:
{
var path = GetType().Namespace + ".Images." + type.ToString().ToLower() + ".jpg";
return Task.FromResult(new DynamicImageResponse
{
Format = ImageFormat.Jpg,
HasImage = true,
Stream = GetType().Assembly.GetManifestResourceStream(path)
});
}
default:
throw new ArgumentException("Unsupported image type: " + type);
}
}
public IEnumerable<ImageType> GetSupportedChannelImages()
{
return new List<ImageType>
{
ImageType.Thumb,
ImageType.Primary
};
}
public string HomePageUrl
{
get { return "http://mediabrowser3.com"; }
}
public bool IsEnabledFor(User user)
{
return true;
}
public string Name
{
get { return "Vimeo"; }
}
public Task<IEnumerable<ChannelItemInfo>> Search(ChannelSearchInfo searchInfo, User user, CancellationToken cancellationToken)
{
throw new NotImplementedException();
}
public ChannelInfo GetChannelInfo()
{
return new ChannelInfo
{
CanSearch = false,
ContentTypes = new List<ChannelMediaContentType>
{
ChannelMediaContentType.Clip
},
MediaTypes = new List<ChannelMediaType>
{
ChannelMediaType.Video
}
};
}
public bool IsEnabledFor(Controller.Entities.User user)
{
return true;
}
}
}

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using System.Xml.XPath;
namespace MediaBrowser.Plugins.Vimeo
{
class VimeoChannelDownloader
{
private ILogger _logger;
private IHttpClient _httpClient;
private IJsonSerializer _jsonSerializer;
public VimeoChannelDownloader(ILogger logManager, IJsonSerializer jsonSerializer, IHttpClient httpClient)
{
_logger = logManager;
_jsonSerializer = jsonSerializer;
_httpClient = httpClient;
}
public async Task<List<VimeoInfo>> GetVimeoChannelList(String catID, CancellationToken cancellationToken)
{
var list = new List<VimeoInfo>();
var url = "https://vimeo.com/channels/page:1/sort:subscribers";
return null;
}
}
}

View File

@ -0,0 +1,250 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MediaBrowser.Plugins.Vimeo
{
public class VimeoInfo
{
public int ID { get; set; }
public String Name { get; set; }
public String URL { get; set; }
public String Description { get; set; }
public DateTime UploadDate { get; set; }
public String Username { get; set; }
public String Thumbnail { get; set; }
public String Privacy { get; set; }
public int VideoHeight { get; set; }
public int VideoWidth { get; set; }
public int VideoBitRate { get; set; }
}
public class Mobile
{
public int profile { get; set; }
public string origin { get; set; }
public string url { get; set; }
public int height { get; set; }
public int width { get; set; }
public int id { get; set; }
public int bitrate { get; set; }
public int availability { get; set; }
}
public class Hd
{
public int profile { get; set; }
public string origin { get; set; }
public string url { get; set; }
public int height { get; set; }
public int width { get; set; }
public int id { get; set; }
public int bitrate { get; set; }
public int availability { get; set; }
}
public class Sd
{
public int profile { get; set; }
public string origin { get; set; }
public string url { get; set; }
public int height { get; set; }
public int width { get; set; }
public int id { get; set; }
public int bitrate { get; set; }
public int availability { get; set; }
}
public class H264
{
public Mobile mobile { get; set; }
public Hd hd { get; set; }
public Sd sd { get; set; }
}
public class Hls
{
public string all { get; set; }
public string hd { get; set; }
}
public class Files
{
public H264 h264 { get; set; }
public Hls hls { get; set; }
public List<string> codecs { get; set; }
}
public class Cookie
{
public int scaling { get; set; }
public double volume { get; set; }
public object hd { get; set; }
public object captions { get; set; }
}
public class Flags
{
public int login { get; set; }
public int preload_video { get; set; }
public int plays { get; set; }
public int partials { get; set; }
public int conviva { get; set; }
}
public class Build
{
public string player { get; set; }
public string js { get; set; }
}
public class Urls
{
public string zeroclip_swf { get; set; }
public string js { get; set; }
public string proxy { get; set; }
public string conviva { get; set; }
public string flideo { get; set; }
public string canvas_js { get; set; }
public string moog { get; set; }
public string conviva_service { get; set; }
public string moog_js { get; set; }
public string zeroclip_js { get; set; }
public string css { get; set; }
}
public class Request
{
public Files files { get; set; }
public string ga_account { get; set; }
public int timestamp { get; set; }
public int expires { get; set; }
public string prefix { get; set; }
public string session { get; set; }
public Cookie cookie { get; set; }
public string cookie_domain { get; set; }
public object referrer { get; set; }
public string conviva_account { get; set; }
public Flags flags { get; set; }
public Build build { get; set; }
public Urls urls { get; set; }
public string signature { get; set; }
}
public class Rating
{
public int id { get; set; }
}
public class Owner
{
public string account_type { get; set; }
public string name { get; set; }
public string img { get; set; }
public string url { get; set; }
public string img_2x { get; set; }
public int id { get; set; }
}
public class Thumbs
{
public string __invalid_name__1280 { get; set; }
public string __invalid_name__960 { get; set; }
public string __invalid_name__640 { get; set; }
}
public class Video
{
public Rating rating { get; set; }
public int allow_hd { get; set; }
public int height { get; set; }
public Owner owner { get; set; }
public Thumbs thumbs { get; set; }
public int duration { get; set; }
public int id { get; set; }
public int hd { get; set; }
public string embed_code { get; set; }
public int default_to_hd { get; set; }
public string title { get; set; }
public string url { get; set; }
public string privacy { get; set; }
public string share_url { get; set; }
public int width { get; set; }
public string embed_permission { get; set; }
public double fps { get; set; }
}
public class Build2
{
public string player { get; set; }
public string rpc { get; set; }
}
public class BylineBadge
{
public string url { get; set; }
public string type { get; set; }
}
public class Settings
{
public int fullscreen { get; set; }
public BylineBadge byline_badge { get; set; }
public int byline { get; set; }
public int like { get; set; }
public int playbar { get; set; }
public int title { get; set; }
public int color { get; set; }
public int branding { get; set; }
public int share { get; set; }
public int scaling { get; set; }
public int logo { get; set; }
public int info_on_pause { get; set; }
public int watch_later { get; set; }
public int portrait { get; set; }
public int embed { get; set; }
public int badge { get; set; }
public int volume { get; set; }
}
public class Embed
{
public object player_id { get; set; }
public string outro { get; set; }
public int api { get; set; }
public string context { get; set; }
public int time { get; set; }
public string color { get; set; }
public Settings settings { get; set; }
public int on_site { get; set; }
public int loop { get; set; }
public int autoplay { get; set; }
}
public class User
{
public int liked { get; set; }
public string account_type { get; set; }
public int logged_in { get; set; }
public int owner { get; set; }
public int watch_later { get; set; }
public int id { get; set; }
public int mod { get; set; }
}
public class RootObject
{
public string cdn_url { get; set; }
public int view { get; set; }
public Request request { get; set; }
public string player_url { get; set; }
public Video video { get; set; }
public Build2 build { get; set; }
public Embed embed { get; set; }
public string vimeo_url { get; set; }
public User user { get; set; }
}
}

View File

@ -0,0 +1,173 @@
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Plugins.Vimeo.Extensions;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
namespace MediaBrowser.Plugins.Vimeo
{
/// <summary>
/// Fetches Apple's list of current movie trailers
/// </summary>
public class VimeoListingDownloader
{
private ILogger _logger;
private IHttpClient _httpClient;
private IJsonSerializer _jsonSerializer;
public VimeoListingDownloader(ILogger logManager, IJsonSerializer jsonSerializer, IHttpClient httpClient)
{
_logger = logManager;
_jsonSerializer = jsonSerializer;
_httpClient = httpClient;
}
/// <summary>
/// The trailer feed URL
/// </summary>
private const string FeedUrl = "http://vimeo.com/api/v2/brad/videos.xml?callback=showThumbs";
/// <summary>
/// Downloads a list of trailer info's from the apple url
/// </summary>
/// <returns>Task{List{TrailerInfo}}.</returns>
public async Task<List<VimeoInfo>> GetVimeoList(CancellationToken cancellationToken)
{
var stream = await _httpClient.Get(new HttpRequestOptions
{
Url = FeedUrl,
CancellationToken = cancellationToken,
UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.28 Safari/537.36"
}).ConfigureAwait(false);
var list = new List<VimeoInfo>();
using (var reader = XmlReader.Create(stream, new XmlReaderSettings { Async = true }))
{
await reader.MoveToContentAsync().ConfigureAwait(false);
while (await reader.ReadAsync().ConfigureAwait(false))
{
cancellationToken.ThrowIfCancellationRequested();
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "video":
{
var trailer = FetchInfo(reader.ReadSubtree());
if (trailer.Privacy == "anywhere")
{
await GetUrl(trailer);
list.Add(trailer);
}
break;
}
}
}
}
}
return list;
}
/// <summary>
/// Fetches trailer info from an xml node
/// </summary>
/// <param name="reader">The reader.</param>
/// <returns>TrailerInfo.</returns>
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
/// <summary>
/// Fetches from the info node
/// </summary>
/// <param name="reader">The reader.</param>
/// <param name="info">The info.</param>
private VimeoInfo FetchInfo(XmlReader reader)
{
var info = new VimeoInfo { };
reader.MoveToContent();
reader.Read();
while (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "id":
info.ID = reader.ReadElementContentAsInt();
break;
case "title":
info.Name = reader.ReadStringSafe();
break;
case "description":
info.Description = reader.ReadStringSafe();
break;
case "thumbnail_medium":
info.Thumbnail = reader.ReadStringSafe();
break;
case "embed_privacy":
info.Privacy = reader.ReadStringSafe();
break;
case "upload_date":
{
DateTime date;
if (DateTime.TryParse(reader.ReadStringSafe(), UsCulture, DateTimeStyles.None, out date))
{
info.UploadDate = date.ToUniversalTime();
}
break;
}
default:
reader.Skip();
break;
}
}
return info;
}
private async Task<String> GetUrl(VimeoInfo i)
{
var reg = new RootObject();
using (var json = await _httpClient.Get("http://player.vimeo.com/v2/video/" + i.ID + "/config?autoplay=0&byline=0&bypass_privacy=1&context=clip.main&default_to_hd=1&portrait=0&title=0", CancellationToken.None).ConfigureAwait(false))
{
reg = _jsonSerializer.DeserializeFromStream<RootObject>(json);
}
//var HD = reg.request.files.h264.hd;
var SD = reg.request.files.h264.sd;
/*if (HD.url == null)
{
i.VideoWidth = HD.width;
i.VideoHeight = HD.height;
i.VideoBitRate = HD.bitrate;
i.URL = HD.url;
}
else
{*/
i.VideoWidth = SD.width;
i.VideoHeight = SD.height;
i.VideoBitRate = SD.bitrate;
i.URL = SD.url;
//}
return i.URL;
}
}
}

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
<package id="ServiceStack.Text" version="4.0.18" targetFramework="net45" />
</packages>

View File

@ -32,17 +32,17 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="MediaBrowser.Common, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Common, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Common.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Common.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Controller, Version=3.0.5235.38993, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Controller, Version=3.0.5238.119, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.360\lib\net45\MediaBrowser.Controller.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Server.Core.3.0.361\lib\net45\MediaBrowser.Controller.dll</HintPath>
</Reference>
<Reference Include="MediaBrowser.Model, Version=3.0.5235.38992, Culture=neutral, processorArchitecture=MSIL">
<Reference Include="MediaBrowser.Model, Version=3.0.5238.118, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Common.3.0.360\lib\net45\MediaBrowser.Model.dll</HintPath>
<HintPath>..\packages\MediaBrowser.Common.3.0.361\lib\net45\MediaBrowser.Model.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.Common" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.360" targetFramework="net45" />
<package id="MediaBrowser.Common" version="3.0.361" targetFramework="net45" />
<package id="MediaBrowser.Server.Core" version="3.0.361" targetFramework="net45" />
</packages>

View File

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30110.0
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Plugins.Trailers", "MediaBrowser.Plugins.Trailers\MediaBrowser.Plugins.Trailers.csproj", "{2F4C01E2-7C9F-4F08-922E-27AC4A1D53FF}"
EndProject
@ -32,6 +32,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Plugins.ProwlN
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Plugins.NotifyMyAndroidNotifications", "MediaBrowser.Plugins.NotifyMyAndroidNotifications\MediaBrowser.Plugins.NotifyMyAndroidNotifications.csproj", "{FFA5128A-BEA6-4FFA-9E0B-9E706AC8A544}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Plugins.PushBulletNotifications", "MediaBrowser.Plugins.PushBulletNotifications\MediaBrowser.Plugins.PushBulletNotifications.csproj", "{D3018C1D-19DD-407E-9A44-304E172599D3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MediaBrowser.Plugins.Vimeo", "MediaBrowser.Plugins.Vimeo\MediaBrowser.Plugins.Vimeo.csproj", "{E966032D-3601-44AA-BC6F-94ACFE8840F5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -112,6 +116,18 @@ Global
{FFA5128A-BEA6-4FFA-9E0B-9E706AC8A544}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFA5128A-BEA6-4FFA-9E0B-9E706AC8A544}.Release|Any CPU.Build.0 = Release|Any CPU
{FFA5128A-BEA6-4FFA-9E0B-9E706AC8A544}.Release|x86.ActiveCfg = Release|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Debug|x86.ActiveCfg = Debug|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Release|Any CPU.Build.0 = Release|Any CPU
{D3018C1D-19DD-407E-9A44-304E172599D3}.Release|x86.ActiveCfg = Release|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Debug|x86.ActiveCfg = Debug|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Release|Any CPU.Build.0 = Release|Any CPU
{E966032D-3601-44AA-BC6F-94ACFE8840F5}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE