mirror of
https://github.com/jellyfin/jellyfin-plugin-bookshelf.git
synced 2025-02-17 12:27:30 +00:00
Inital commit of Vimeo and PushBullet both need work!
This commit is contained in:
parent
70dc4f2d34
commit
030395f6f7
@ -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" />
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
||||
}
|
@ -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>
|
@ -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>
|
75
MediaBrowser.Plugins.PushBulletNotifications/Notifier.cs
Normal file
75
MediaBrowser.Plugins.PushBulletNotifications/Notifier.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
46
MediaBrowser.Plugins.PushBulletNotifications/Plugin.cs
Normal file
46
MediaBrowser.Plugins.PushBulletNotifications/Plugin.cs
Normal 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; }
|
||||
}
|
||||
}
|
@ -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
|
||||
//
|
BIN
MediaBrowser.Plugins.PushBulletNotifications/PushOverLogo.png
Normal file
BIN
MediaBrowser.Plugins.PushBulletNotifications/PushOverLogo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
@ -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>
|
@ -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>
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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));
|
||||
|
@ -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>
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
}
|
||||
}
|
||||
}
|
74
MediaBrowser.Plugins.Vimeo/Configuration/configPage.html
Normal file
74
MediaBrowser.Plugins.Vimeo/Configuration/configPage.html
Normal 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>
|
22
MediaBrowser.Plugins.Vimeo/Extensions/XmlExtensions.cs
Normal file
22
MediaBrowser.Plugins.Vimeo/Extensions/XmlExtensions.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
BIN
MediaBrowser.Plugins.Vimeo/Images/primary.jpg
Normal file
BIN
MediaBrowser.Plugins.Vimeo/Images/primary.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 254 KiB |
BIN
MediaBrowser.Plugins.Vimeo/Images/thumb.jpg
Normal file
BIN
MediaBrowser.Plugins.Vimeo/Images/thumb.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 230 KiB |
98
MediaBrowser.Plugins.Vimeo/MediaBrowser.Plugins.Vimeo.csproj
Normal file
98
MediaBrowser.Plugins.Vimeo/MediaBrowser.Plugins.Vimeo.csproj
Normal 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>
|
47
MediaBrowser.Plugins.Vimeo/Plugin.cs
Normal file
47
MediaBrowser.Plugins.Vimeo/Plugin.cs
Normal 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; }
|
||||
}
|
||||
}
|
29
MediaBrowser.Plugins.Vimeo/Properties/AssemblyInfo.cs
Normal file
29
MediaBrowser.Plugins.Vimeo/Properties/AssemblyInfo.cs
Normal 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
|
165
MediaBrowser.Plugins.Vimeo/VimeoChannel.cs
Normal file
165
MediaBrowser.Plugins.Vimeo/VimeoChannel.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
44
MediaBrowser.Plugins.Vimeo/VimeoChannelDownloader.cs
Normal file
44
MediaBrowser.Plugins.Vimeo/VimeoChannelDownloader.cs
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
250
MediaBrowser.Plugins.Vimeo/VimeoInfo.cs
Normal file
250
MediaBrowser.Plugins.Vimeo/VimeoInfo.cs
Normal 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; }
|
||||
}
|
||||
}
|
173
MediaBrowser.Plugins.Vimeo/VimeoListingDownloader.cs
Normal file
173
MediaBrowser.Plugins.Vimeo/VimeoListingDownloader.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
6
MediaBrowser.Plugins.Vimeo/packages.config
Normal file
6
MediaBrowser.Plugins.Vimeo/packages.config
Normal 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>
|
@ -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" />
|
||||
|
@ -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>
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user