mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-10 15:32:37 -07:00
Merge branch 'dev' of https://github.com/tidusjar/PlexRequests.Net.git
This commit is contained in:
commit
9d9fc3daf8
5 changed files with 287 additions and 257 deletions
|
@ -25,11 +25,20 @@
|
||||||
// ************************************************************************/
|
// ************************************************************************/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace PlexRequests.Core.Models
|
namespace PlexRequests.Core.Models
|
||||||
{
|
{
|
||||||
public class StatusModel
|
public class StatusModel
|
||||||
{
|
{
|
||||||
public string Version { get; set; }
|
public string Version { get; set; }
|
||||||
|
public int DBVersion {
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string trimStatus = new Regex("[^0-9]", RegexOptions.Compiled).Replace(Version, string.Empty).PadRight(4, '0');
|
||||||
|
return int.Parse(trimStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
public bool UpdateAvailable { get; set; }
|
public bool UpdateAvailable { get; set; }
|
||||||
public string UpdateUri { get; set; }
|
public string UpdateUri { get; set; }
|
||||||
public string DownloadUri { get; set; }
|
public string DownloadUri { get; set; }
|
||||||
|
|
|
@ -36,13 +36,12 @@ using PlexRequests.Core.SettingModels;
|
||||||
using PlexRequests.Helpers;
|
using PlexRequests.Helpers;
|
||||||
using PlexRequests.Store;
|
using PlexRequests.Store;
|
||||||
using PlexRequests.Store.Repository;
|
using PlexRequests.Store.Repository;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace PlexRequests.Core
|
namespace PlexRequests.Core
|
||||||
{
|
{
|
||||||
public class Setup
|
public class Setup
|
||||||
{
|
{
|
||||||
public const int SchemaVersion = 1;
|
|
||||||
|
|
||||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||||
private static DbConfiguration Db { get; set; }
|
private static DbConfiguration Db { get; set; }
|
||||||
public string SetupDb()
|
public string SetupDb()
|
||||||
|
@ -55,29 +54,39 @@ namespace PlexRequests.Core
|
||||||
{
|
{
|
||||||
CreateDefaultSettingsPage();
|
CreateDefaultSettingsPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var version = CheckSchema();
|
||||||
|
if (version > 0)
|
||||||
|
{
|
||||||
|
if (version > 1300 && version <= 1699)
|
||||||
|
{
|
||||||
|
MigrateDbFrom1300();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MigrateDb();
|
|
||||||
CheckSchema();
|
|
||||||
return Db.DbConnection().ConnectionString;
|
return Db.DbConnection().ConnectionString;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ConnectionString => Db.DbConnection().ConnectionString;
|
public static string ConnectionString => Db.DbConnection().ConnectionString;
|
||||||
|
|
||||||
|
|
||||||
private void CheckSchema()
|
private int CheckSchema()
|
||||||
{
|
{
|
||||||
|
var checker = new StatusChecker();
|
||||||
|
var status = checker.GetStatus();
|
||||||
|
|
||||||
var connection = Db.DbConnection();
|
var connection = Db.DbConnection();
|
||||||
var schema = connection.GetSchemaVersion();
|
var schema = connection.GetSchemaVersion();
|
||||||
if (schema == null)
|
if (schema == null)
|
||||||
{
|
{
|
||||||
connection.CreateSchema(); // Set the default.
|
connection.CreateSchema(status.DBVersion); // Set the default.
|
||||||
schema = connection.GetSchemaVersion();
|
schema = connection.GetSchemaVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
var version = schema.SchemaVersion;
|
var version = schema.SchemaVersion;
|
||||||
if (version == 0)
|
if (version == 0)
|
||||||
{
|
{
|
||||||
connection.UpdateSchemaVersion(SchemaVersion);
|
connection.UpdateSchemaVersion(status.DBVersion);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
TableCreation.AlterTable(Db.DbConnection(), "RequestBlobs", "ADD COLUMN", "MusicId", false, "TEXT");
|
TableCreation.AlterTable(Db.DbConnection(), "RequestBlobs", "ADD COLUMN", "MusicId", false, "TEXT");
|
||||||
|
@ -86,9 +95,10 @@ namespace PlexRequests.Core
|
||||||
{
|
{
|
||||||
Log.Error("Tried updating the schema to version 1");
|
Log.Error("Tried updating the schema to version 1");
|
||||||
Log.Error(e);
|
Log.Error(e);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateDefaultSettingsPage()
|
private void CreateDefaultSettingsPage()
|
||||||
|
@ -105,7 +115,7 @@ namespace PlexRequests.Core
|
||||||
s.SaveSettings(defaultSettings);
|
s.SaveSettings(defaultSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MigrateDb() // TODO: Remove in v1.7
|
private void MigrateDbFrom1300() // TODO: Remove in v1.7
|
||||||
{
|
{
|
||||||
|
|
||||||
var result = new List<long>();
|
var result = new List<long>();
|
||||||
|
@ -147,7 +157,7 @@ namespace PlexRequests.Core
|
||||||
Issues = r.Issues,
|
Issues = r.Issues,
|
||||||
OtherMessage = r.OtherMessage,
|
OtherMessage = r.OtherMessage,
|
||||||
Overview = show.summary.RemoveHtml(),
|
Overview = show.summary.RemoveHtml(),
|
||||||
RequestedBy = r.RequestedBy,
|
RequestedUsers = r.AllUsers, // should pull in the RequestedBy property and merge with RequestedUsers
|
||||||
RequestedDate = r.ReleaseDate,
|
RequestedDate = r.ReleaseDate,
|
||||||
Status = show.status
|
Status = show.status
|
||||||
};
|
};
|
||||||
|
|
|
@ -80,10 +80,10 @@ namespace PlexRequests.Store
|
||||||
con.Close();
|
con.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CreateSchema(this IDbConnection con)
|
public static void CreateSchema(this IDbConnection con, int version)
|
||||||
{
|
{
|
||||||
con.Open();
|
con.Open();
|
||||||
con.Query("INSERT INTO DBInfo (SchemaVersion) values (0)");
|
con.Query(string.Format("INSERT INTO DBInfo (SchemaVersion) values ({0})", version));
|
||||||
con.Close();
|
con.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,283 +5,294 @@
|
||||||
return opts.inverse(this);
|
return opts.inverse(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
var searchSource = $("#search-template").html();
|
$(function () {
|
||||||
var musicSource = $("#music-template").html();
|
|
||||||
var searchTemplate = Handlebars.compile(searchSource);
|
|
||||||
var musicTemplate = Handlebars.compile(musicSource);
|
|
||||||
|
|
||||||
var searchTimer = 0;
|
var searchSource = $("#search-template").html();
|
||||||
|
var musicSource = $("#music-template").html();
|
||||||
|
var searchTemplate = Handlebars.compile(searchSource);
|
||||||
|
var musicTemplate = Handlebars.compile(musicSource);
|
||||||
|
|
||||||
// Type in movie search
|
var searchTimer = 0;
|
||||||
$("#movieSearchContent").on("input", function () {
|
|
||||||
if (searchTimer) {
|
|
||||||
clearTimeout(searchTimer);
|
|
||||||
}
|
|
||||||
$('#movieSearchButton').attr("class","fa fa-spinner fa-spin");
|
|
||||||
searchTimer = setTimeout(movieSearch, 400);
|
|
||||||
|
|
||||||
});
|
// fix for selecting a default tab
|
||||||
|
var $tabs = $('#nav-tabs').children('li');
|
||||||
$('#moviesComingSoon').on('click', function (e) {
|
if ($tabs.filter(function (li) { return $(li).hasClass('active') }).length <= 0) {
|
||||||
e.preventDefault();
|
$tabs.first().children('a:first-child').tab('show');
|
||||||
moviesComingSoon();
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#moviesInTheaters').on('click', function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
moviesInTheaters();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Type in TV search
|
|
||||||
$("#tvSearchContent").on("input", function () {
|
|
||||||
if (searchTimer) {
|
|
||||||
clearTimeout(searchTimer);
|
|
||||||
}
|
|
||||||
$('#tvSearchButton').attr("class", "fa fa-spinner fa-spin");
|
|
||||||
searchTimer = setTimeout(tvSearch, 400);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Click TV dropdown option
|
|
||||||
$(document).on("click", ".dropdownTv", function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var buttonId = e.target.id;
|
|
||||||
if ($("#" + buttonId).attr('disabled')) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#" + buttonId).prop("disabled", true);
|
|
||||||
loadingButton(buttonId, "primary");
|
// Type in movie search
|
||||||
|
$("#movieSearchContent").on("input", function () {
|
||||||
|
if (searchTimer) {
|
||||||
|
clearTimeout(searchTimer);
|
||||||
|
}
|
||||||
|
$('#movieSearchButton').attr("class", "fa fa-spinner fa-spin");
|
||||||
|
searchTimer = setTimeout(movieSearch, 400);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#moviesComingSoon').on('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
moviesComingSoon();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#moviesInTheaters').on('click', function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
moviesInTheaters();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Type in TV search
|
||||||
|
$("#tvSearchContent").on("input", function () {
|
||||||
|
if (searchTimer) {
|
||||||
|
clearTimeout(searchTimer);
|
||||||
|
}
|
||||||
|
$('#tvSearchButton').attr("class", "fa fa-spinner fa-spin");
|
||||||
|
searchTimer = setTimeout(tvSearch, 400);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Click TV dropdown option
|
||||||
|
$(document).on("click", ".dropdownTv", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var buttonId = e.target.id;
|
||||||
|
if ($("#" + buttonId).attr('disabled')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#" + buttonId).prop("disabled", true);
|
||||||
|
loadingButton(buttonId, "primary");
|
||||||
|
|
||||||
|
|
||||||
var $form = $('#form' + buttonId);
|
var $form = $('#form' + buttonId);
|
||||||
var data = $form.serialize();
|
var data = $form.serialize();
|
||||||
var seasons = $(this).attr("season-select");
|
var seasons = $(this).attr("season-select");
|
||||||
if (seasons === "2") {
|
if (seasons === "2") {
|
||||||
// Send over the latest
|
// Send over the latest
|
||||||
data = data + "&seasons=latest";
|
data = data + "&seasons=latest";
|
||||||
}
|
}
|
||||||
if (seasons === "1") {
|
if (seasons === "1") {
|
||||||
// Send over the first season
|
// Send over the first season
|
||||||
data = data + "&seasons=first";
|
data = data + "&seasons=first";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var type = $form.prop('method');
|
var type = $form.prop('method');
|
||||||
var url = $form.prop('action');
|
var url = $form.prop('action');
|
||||||
|
|
||||||
sendRequestAjax(data, type, url, buttonId);
|
sendRequestAjax(data, type, url, buttonId);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Search Music
|
// Search Music
|
||||||
$("#musicSearchContent").on("input", function () {
|
$("#musicSearchContent").on("input", function () {
|
||||||
if (searchTimer) {
|
if (searchTimer) {
|
||||||
clearTimeout(searchTimer);
|
clearTimeout(searchTimer);
|
||||||
}
|
}
|
||||||
$('#musicSearchButton').attr("class", "fa fa-spinner fa-spin");
|
$('#musicSearchButton').attr("class", "fa fa-spinner fa-spin");
|
||||||
searchTimer = setTimeout(musicSearch, 400);
|
searchTimer = setTimeout(musicSearch, 400);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Click Request for movie
|
// Click Request for movie
|
||||||
$(document).on("click", ".requestMovie", function (e) {
|
$(document).on("click", ".requestMovie", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var buttonId = e.target.id;
|
var buttonId = e.target.id;
|
||||||
if ($("#" + buttonId).attr('disabled')) {
|
if ($("#" + buttonId).attr('disabled')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#" + buttonId).prop("disabled", true);
|
$("#" + buttonId).prop("disabled", true);
|
||||||
loadingButton(buttonId, "primary");
|
loadingButton(buttonId, "primary");
|
||||||
|
|
||||||
|
|
||||||
var $form = $('#form' + buttonId);
|
var $form = $('#form' + buttonId);
|
||||||
|
|
||||||
var type = $form.prop('method');
|
var type = $form.prop('method');
|
||||||
var url = $form.prop('action');
|
var url = $form.prop('action');
|
||||||
var data = $form.serialize();
|
var data = $form.serialize();
|
||||||
|
|
||||||
sendRequestAjax(data, type, url, buttonId);
|
sendRequestAjax(data, type, url, buttonId);
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Click Request for album
|
});
|
||||||
$(document).on("click", ".requestAlbum", function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var buttonId = e.target.id;
|
|
||||||
if ($("#" + buttonId).attr('disabled')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$("#" + buttonId).prop("disabled", true);
|
// Click Request for album
|
||||||
loadingButton(buttonId, "primary");
|
$(document).on("click", ".requestAlbum", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var buttonId = e.target.id;
|
||||||
|
if ($("#" + buttonId).attr('disabled')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#" + buttonId).prop("disabled", true);
|
||||||
|
loadingButton(buttonId, "primary");
|
||||||
|
|
||||||
|
|
||||||
var $form = $('#form' + buttonId);
|
var $form = $('#form' + buttonId);
|
||||||
|
|
||||||
var type = $form.prop('method');
|
var type = $form.prop('method');
|
||||||
var url = $form.prop('action');
|
var url = $form.prop('action');
|
||||||
var data = $form.serialize();
|
var data = $form.serialize();
|
||||||
|
|
||||||
sendRequestAjax(data, type, url, buttonId);
|
sendRequestAjax(data, type, url, buttonId);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function sendRequestAjax(data, type, url, buttonId) {
|
function sendRequestAjax(data, type, url, buttonId) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: type,
|
type: type,
|
||||||
url: url,
|
url: url,
|
||||||
data: data,
|
data: data,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
if (response.result === true) {
|
if (response.result === true) {
|
||||||
generateNotify(response.message || "Success!", "success");
|
generateNotify(response.message || "Success!", "success");
|
||||||
|
|
||||||
$('#' + buttonId).html("<i class='fa fa-check'></i> Requested");
|
$('#' + buttonId).html("<i class='fa fa-check'></i> Requested");
|
||||||
$('#' + buttonId).removeClass("btn-primary-outline");
|
$('#' + buttonId).removeClass("btn-primary-outline");
|
||||||
$('#' + buttonId).removeAttr("data-toggle");
|
$('#' + buttonId).removeAttr("data-toggle");
|
||||||
$('#' + buttonId).addClass("btn-success-outline");
|
$('#' + buttonId).addClass("btn-success-outline");
|
||||||
} else {
|
} else {
|
||||||
generateNotify(response.message, "warning");
|
generateNotify(response.message, "warning");
|
||||||
$('#' + buttonId).html("<i class='fa fa-plus'></i> Request");
|
$('#' + buttonId).html("<i class='fa fa-plus'></i> Request");
|
||||||
$('#' + buttonId).attr("data-toggle", "dropdown");
|
$('#' + buttonId).attr("data-toggle", "dropdown");
|
||||||
$("#" + buttonId).removeAttr("disabled");
|
$("#" + buttonId).removeAttr("disabled");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
console.log(e);
|
||||||
|
generateNotify("Something went wrong!", "danger");
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
error: function (e) {
|
}
|
||||||
console.log(e);
|
|
||||||
generateNotify("Something went wrong!", "danger");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function movieSearch() {
|
function movieSearch() {
|
||||||
var query = $("#movieSearchContent").val();
|
var query = $("#movieSearchContent").val();
|
||||||
getMovies("/search/movie/" + query);
|
getMovies("/search/movie/" + query);
|
||||||
}
|
}
|
||||||
|
|
||||||
function moviesComingSoon() {
|
function moviesComingSoon() {
|
||||||
getMovies("/search/movie/upcoming");
|
getMovies("/search/movie/upcoming");
|
||||||
}
|
}
|
||||||
|
|
||||||
function moviesInTheaters() {
|
function moviesInTheaters() {
|
||||||
getMovies("/search/movie/playing");
|
getMovies("/search/movie/playing");
|
||||||
}
|
}
|
||||||
|
|
||||||
function getMovies(url) {
|
function getMovies(url) {
|
||||||
$("#movieList").html("");
|
$("#movieList").html("");
|
||||||
|
|
||||||
|
|
||||||
$.ajax(url).success(function (results) {
|
|
||||||
if (results.length > 0) {
|
|
||||||
results.forEach(function(result) {
|
|
||||||
var context = buildMovieContext(result);
|
|
||||||
|
|
||||||
var html = searchTemplate(context);
|
$.ajax(url).success(function (results) {
|
||||||
$("#movieList").append(html);
|
if (results.length > 0) {
|
||||||
});
|
results.forEach(function (result) {
|
||||||
}
|
var context = buildMovieContext(result);
|
||||||
else {
|
|
||||||
$("#movieList").html(noResultsHtml);
|
|
||||||
}
|
|
||||||
$('#movieSearchButton').attr("class","fa fa-search");
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function tvSearch() {
|
var html = searchTemplate(context);
|
||||||
var query = $("#tvSearchContent").val();
|
$("#movieList").append(html);
|
||||||
getTvShows("/search/tv/" + query);
|
});
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
function getTvShows(url) {
|
$("#movieList").html(noResultsHtml);
|
||||||
$("#tvList").html("");
|
}
|
||||||
|
$('#movieSearchButton').attr("class", "fa fa-search");
|
||||||
$.ajax(url).success(function (results) {
|
});
|
||||||
if (results.length > 0) {
|
|
||||||
results.forEach(function(result) {
|
|
||||||
var context = buildTvShowContext(result);
|
|
||||||
var html = searchTemplate(context);
|
|
||||||
$("#tvList").append(html);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#tvList").html(noResultsHtml);
|
|
||||||
}
|
|
||||||
$('#tvSearchButton').attr("class", "fa fa-search");
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function musicSearch() {
|
|
||||||
var query = $("#musicSearchContent").val();
|
|
||||||
getMusic("/search/music/" + query);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getMusic(url) {
|
|
||||||
$("#musicList").html("");
|
|
||||||
|
|
||||||
$.ajax(url).success(function (results) {
|
|
||||||
if (results.length > 0) {
|
|
||||||
results.forEach(function (result) {
|
|
||||||
var context = buildMusicContext(result);
|
|
||||||
|
|
||||||
var html = musicTemplate(context);
|
|
||||||
$("#musicList").append(html);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#musicList").html(noResultsMusic);
|
|
||||||
}
|
|
||||||
$('#musicSearchButton').attr("class", "fa fa-search");
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
function buildMovieContext(result) {
|
|
||||||
var date = new Date(result.releaseDate);
|
|
||||||
var year = date.getFullYear();
|
|
||||||
var context = {
|
|
||||||
posterPath: result.posterPath,
|
|
||||||
id: result.id,
|
|
||||||
title: result.title,
|
|
||||||
overview: result.overview,
|
|
||||||
voteCount: result.voteCount,
|
|
||||||
voteAverage: result.voteAverage,
|
|
||||||
year: year,
|
|
||||||
type: "movie",
|
|
||||||
imdb: result.imdbId
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return context;
|
function tvSearch() {
|
||||||
}
|
var query = $("#tvSearchContent").val();
|
||||||
|
getTvShows("/search/tv/" + query);
|
||||||
|
}
|
||||||
|
|
||||||
function buildTvShowContext(result) {
|
function getTvShows(url) {
|
||||||
var date = new Date(result.firstAired);
|
$("#tvList").html("");
|
||||||
var year = date.getFullYear();
|
|
||||||
var context = {
|
|
||||||
posterPath: result.banner,
|
|
||||||
id: result.id,
|
|
||||||
title: result.seriesName,
|
|
||||||
overview: result.overview,
|
|
||||||
year: year,
|
|
||||||
type: "tv",
|
|
||||||
imdb: result.imdbId
|
|
||||||
};
|
|
||||||
return context;
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildMusicContext(result) {
|
$.ajax(url).success(function (results) {
|
||||||
|
if (results.length > 0) {
|
||||||
var context = {
|
results.forEach(function (result) {
|
||||||
id: result.id,
|
var context = buildTvShowContext(result);
|
||||||
title: result.title,
|
var html = searchTemplate(context);
|
||||||
overview: result.overview,
|
$("#tvList").append(html);
|
||||||
year: result.releaseDate,
|
});
|
||||||
type: "album",
|
}
|
||||||
trackCount: result.trackCount,
|
else {
|
||||||
coverArtUrl: result.coverArtUrl,
|
$("#tvList").html(noResultsHtml);
|
||||||
artist: result.artist,
|
}
|
||||||
releaseType: result.releaseType,
|
$('#tvSearchButton').attr("class", "fa fa-search");
|
||||||
country: result.country
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
return context;
|
function musicSearch() {
|
||||||
}
|
var query = $("#musicSearchContent").val();
|
||||||
|
getMusic("/search/music/" + query);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMusic(url) {
|
||||||
|
$("#musicList").html("");
|
||||||
|
|
||||||
|
$.ajax(url).success(function (results) {
|
||||||
|
if (results.length > 0) {
|
||||||
|
results.forEach(function (result) {
|
||||||
|
var context = buildMusicContext(result);
|
||||||
|
|
||||||
|
var html = musicTemplate(context);
|
||||||
|
$("#musicList").append(html);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#musicList").html(noResultsMusic);
|
||||||
|
}
|
||||||
|
$('#musicSearchButton').attr("class", "fa fa-search");
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
function buildMovieContext(result) {
|
||||||
|
var date = new Date(result.releaseDate);
|
||||||
|
var year = date.getFullYear();
|
||||||
|
var context = {
|
||||||
|
posterPath: result.posterPath,
|
||||||
|
id: result.id,
|
||||||
|
title: result.title,
|
||||||
|
overview: result.overview,
|
||||||
|
voteCount: result.voteCount,
|
||||||
|
voteAverage: result.voteAverage,
|
||||||
|
year: year,
|
||||||
|
type: "movie",
|
||||||
|
imdb: result.imdbId
|
||||||
|
};
|
||||||
|
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildTvShowContext(result) {
|
||||||
|
var date = new Date(result.firstAired);
|
||||||
|
var year = date.getFullYear();
|
||||||
|
var context = {
|
||||||
|
posterPath: result.banner,
|
||||||
|
id: result.id,
|
||||||
|
title: result.seriesName,
|
||||||
|
overview: result.overview,
|
||||||
|
year: year,
|
||||||
|
type: "tv",
|
||||||
|
imdb: result.imdbId
|
||||||
|
};
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildMusicContext(result) {
|
||||||
|
|
||||||
|
var context = {
|
||||||
|
id: result.id,
|
||||||
|
title: result.title,
|
||||||
|
overview: result.overview,
|
||||||
|
year: result.releaseDate,
|
||||||
|
type: "album",
|
||||||
|
trackCount: result.trackCount,
|
||||||
|
coverArtUrl: result.coverArtUrl,
|
||||||
|
artist: result.artist,
|
||||||
|
releaseType: result.releaseType,
|
||||||
|
country: result.country
|
||||||
|
};
|
||||||
|
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
|
@ -282,7 +282,7 @@ namespace PlexRequests.UI.Modules
|
||||||
var notificationModel = new NotificationModel
|
var notificationModel = new NotificationModel
|
||||||
{
|
{
|
||||||
Title = model.Title,
|
Title = model.Title,
|
||||||
User = model.RequestedBy,
|
User = Username,
|
||||||
DateTime = DateTime.Now,
|
DateTime = DateTime.Now,
|
||||||
NotificationType = NotificationType.NewRequest
|
NotificationType = NotificationType.NewRequest
|
||||||
};
|
};
|
||||||
|
@ -307,7 +307,7 @@ namespace PlexRequests.UI.Modules
|
||||||
var notificationModel = new NotificationModel
|
var notificationModel = new NotificationModel
|
||||||
{
|
{
|
||||||
Title = model.Title,
|
Title = model.Title,
|
||||||
User = model.RequestedBy,
|
User = Username,
|
||||||
DateTime = DateTime.Now,
|
DateTime = DateTime.Now,
|
||||||
NotificationType = NotificationType.NewRequest
|
NotificationType = NotificationType.NewRequest
|
||||||
};
|
};
|
||||||
|
@ -322,7 +322,7 @@ namespace PlexRequests.UI.Modules
|
||||||
Log.Debug("Adding movie to database requests");
|
Log.Debug("Adding movie to database requests");
|
||||||
var id = RequestService.AddRequest(model);
|
var id = RequestService.AddRequest(model);
|
||||||
|
|
||||||
var notificationModel = new NotificationModel { Title = model.Title, User = model.RequestedBy, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
var notificationModel = new NotificationModel { Title = model.Title, User = Username, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
||||||
NotificationService.Publish(notificationModel);
|
NotificationService.Publish(notificationModel);
|
||||||
|
|
||||||
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullMovieName} was successfully added!" });
|
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullMovieName} was successfully added!" });
|
||||||
|
@ -427,7 +427,7 @@ namespace PlexRequests.UI.Modules
|
||||||
model.Approved = true;
|
model.Approved = true;
|
||||||
Log.Debug("Adding tv to database requests (No approval required & Sonarr)");
|
Log.Debug("Adding tv to database requests (No approval required & Sonarr)");
|
||||||
RequestService.AddRequest(model);
|
RequestService.AddRequest(model);
|
||||||
var notify1 = new NotificationModel { Title = model.Title, User = model.RequestedBy, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
var notify1 = new NotificationModel { Title = model.Title, User = Username, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
||||||
NotificationService.Publish(notify1);
|
NotificationService.Publish(notify1);
|
||||||
|
|
||||||
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
||||||
|
@ -448,7 +448,7 @@ namespace PlexRequests.UI.Modules
|
||||||
Log.Debug("Adding tv to database requests (No approval required & SickRage)");
|
Log.Debug("Adding tv to database requests (No approval required & SickRage)");
|
||||||
RequestService.AddRequest(model);
|
RequestService.AddRequest(model);
|
||||||
|
|
||||||
var notify2 = new NotificationModel { Title = model.Title, User = model.RequestedBy, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
var notify2 = new NotificationModel { Title = model.Title, User = Username, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
||||||
NotificationService.Publish(notify2);
|
NotificationService.Publish(notify2);
|
||||||
|
|
||||||
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
||||||
|
@ -462,7 +462,7 @@ namespace PlexRequests.UI.Modules
|
||||||
|
|
||||||
RequestService.AddRequest(model);
|
RequestService.AddRequest(model);
|
||||||
|
|
||||||
var notificationModel = new NotificationModel { Title = model.Title, User = model.RequestedBy, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
var notificationModel = new NotificationModel { Title = model.Title, User = Username, DateTime = DateTime.Now, NotificationType = NotificationType.NewRequest };
|
||||||
NotificationService.Publish(notificationModel);
|
NotificationService.Publish(notificationModel);
|
||||||
|
|
||||||
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
return Response.AsJson(new JsonResponseModel { Result = true, Message = $"{fullShowName} was successfully added!" });
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue