mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-31 03:50:08 -07:00
#1264 "They may take our lives, but they'll never take our freedom!"
This commit is contained in:
parent
4836ab7e6c
commit
d53864fef1
8 changed files with 152 additions and 9 deletions
|
@ -94,7 +94,7 @@ namespace Ombi.Core.Migration.Migrations
|
||||||
content.Add(new RecentlyAddedLog
|
content.Add(new RecentlyAddedLog
|
||||||
{
|
{
|
||||||
AddedAt = DateTime.UtcNow,
|
AddedAt = DateTime.UtcNow,
|
||||||
ProviderId = ep.ProviderId
|
ProviderId = ep.RatingKey
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
134
Ombi.Core.Migration/Migrations/Version2210.cs
Normal file
134
Ombi.Core.Migration/Migrations/Version2210.cs
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
#region Copyright
|
||||||
|
|
||||||
|
// /************************************************************************
|
||||||
|
// Copyright (c) 2016 Jamie Rees
|
||||||
|
// File: Version1100.cs
|
||||||
|
// Created By: Jamie Rees
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
// a copy of this software and associated documentation files (the
|
||||||
|
// "Software"), to deal in the Software without restriction, including
|
||||||
|
// without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
// permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
// the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be
|
||||||
|
// included in all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
// ************************************************************************/
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using NLog;
|
||||||
|
using Ombi.Core.SettingModels;
|
||||||
|
using Ombi.Store;
|
||||||
|
using Ombi.Store.Models;
|
||||||
|
using Ombi.Store.Models.Emby;
|
||||||
|
using Ombi.Store.Models.Plex;
|
||||||
|
using Ombi.Store.Repository;
|
||||||
|
using Quartz.Collection;
|
||||||
|
|
||||||
|
namespace Ombi.Core.Migration.Migrations
|
||||||
|
{
|
||||||
|
[Migration(22100, "v2.21.0.0")]
|
||||||
|
public class Version2210 : BaseMigration, IMigration
|
||||||
|
{
|
||||||
|
public Version2210(IRepository<RecentlyAddedLog> log,
|
||||||
|
IRepository<PlexContent> content, IRepository<PlexEpisodes> plexEp, IRepository<EmbyContent> embyContent, IRepository<EmbyEpisodes> embyEp)
|
||||||
|
{
|
||||||
|
Log = log;
|
||||||
|
PlexContent = content;
|
||||||
|
PlexEpisodes = plexEp;
|
||||||
|
EmbyContent = embyContent;
|
||||||
|
EmbyEpisodes = embyEp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Version => 22000;
|
||||||
|
private IRepository<RecentlyAddedLog> Log { get; }
|
||||||
|
private IRepository<PlexContent> PlexContent { get; }
|
||||||
|
private IRepository<PlexEpisodes> PlexEpisodes { get; }
|
||||||
|
private IRepository<EmbyContent> EmbyContent { get; }
|
||||||
|
private IRepository<EmbyEpisodes> EmbyEpisodes { get; }
|
||||||
|
|
||||||
|
public void Start(IDbConnection con)
|
||||||
|
{
|
||||||
|
UpdateRecentlyAdded(con);
|
||||||
|
UpdateSchema(con, Version);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateRecentlyAdded(IDbConnection con)
|
||||||
|
{
|
||||||
|
|
||||||
|
//Delete the recently added table, lets start again
|
||||||
|
Log.DeleteAll("RecentlyAddedLog");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Plex
|
||||||
|
var plexAllContent = PlexContent.GetAll();
|
||||||
|
var content = new HashSet<RecentlyAddedLog>();
|
||||||
|
foreach (var plexContent in plexAllContent)
|
||||||
|
{
|
||||||
|
if(plexContent.Type == PlexMediaType.Artist) continue;
|
||||||
|
content.Add(new RecentlyAddedLog
|
||||||
|
{
|
||||||
|
AddedAt = DateTime.UtcNow,
|
||||||
|
ProviderId = plexContent.ProviderId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Log.BatchInsert(content, "RecentlyAddedLog");
|
||||||
|
|
||||||
|
var plexEpisodeses = PlexEpisodes.GetAll();
|
||||||
|
content.Clear();
|
||||||
|
foreach (var ep in plexEpisodeses)
|
||||||
|
{
|
||||||
|
content.Add(new RecentlyAddedLog
|
||||||
|
{
|
||||||
|
AddedAt = DateTime.UtcNow,
|
||||||
|
ProviderId = ep.RatingKey
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Log.BatchInsert(content, "RecentlyAddedLog");
|
||||||
|
|
||||||
|
// Emby
|
||||||
|
content.Clear();
|
||||||
|
var embyContent = EmbyContent.GetAll();
|
||||||
|
foreach (var plexContent in embyContent)
|
||||||
|
{
|
||||||
|
content.Add(new RecentlyAddedLog
|
||||||
|
{
|
||||||
|
AddedAt = DateTime.UtcNow,
|
||||||
|
ProviderId = plexContent.EmbyId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Log.BatchInsert(content, "RecentlyAddedLog");
|
||||||
|
|
||||||
|
var embyEpisodes = EmbyEpisodes.GetAll();
|
||||||
|
content.Clear();
|
||||||
|
foreach (var ep in embyEpisodes)
|
||||||
|
{
|
||||||
|
content.Add(new RecentlyAddedLog
|
||||||
|
{
|
||||||
|
AddedAt = DateTime.UtcNow,
|
||||||
|
ProviderId = ep.EmbyId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Log.BatchInsert(content, "RecentlyAddedLog");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -69,6 +69,7 @@
|
||||||
<Compile Include="MigrationAttribute.cs" />
|
<Compile Include="MigrationAttribute.cs" />
|
||||||
<Compile Include="MigrationRunner.cs" />
|
<Compile Include="MigrationRunner.cs" />
|
||||||
<Compile Include="Migrations\BaseMigration.cs" />
|
<Compile Include="Migrations\BaseMigration.cs" />
|
||||||
|
<Compile Include="Migrations\Version2210.cs" />
|
||||||
<Compile Include="Migrations\Version2200.cs" />
|
<Compile Include="Migrations\Version2200.cs" />
|
||||||
<Compile Include="Migrations\Version1100.cs" />
|
<Compile Include="Migrations\Version1100.cs" />
|
||||||
<Compile Include="Migrations\Version195.cs" />
|
<Compile Include="Migrations\Version195.cs" />
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
var firstRun = !recentlyAdded.Any();
|
var firstRun = !recentlyAdded.Any();
|
||||||
|
|
||||||
var filteredMovies = movie.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
var filteredMovies = movie.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
||||||
var filteredEp = episodes.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
var filteredEp = episodes.Where(m => recentlyAdded.All(x => x.ProviderId != m.RatingKey)).ToList();
|
||||||
var filteredSeries = series.Where(x => recentlyAdded.All(c => c.ProviderId != x.ProviderId)).ToList();
|
var filteredSeries = series.Where(x => recentlyAdded.All(c => c.ProviderId != x.ProviderId)).ToList();
|
||||||
|
|
||||||
var info = new List<PlexRecentlyAddedModel>();
|
var info = new List<PlexRecentlyAddedModel>();
|
||||||
|
@ -144,6 +144,11 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
newsletter.MovieCount = info.Count;
|
newsletter.MovieCount = info.Count;
|
||||||
|
|
||||||
info.Clear();
|
info.Clear();
|
||||||
|
if (test && !filteredEp.Any() && episodes.Any())
|
||||||
|
{
|
||||||
|
// if this is a test make sure we show something
|
||||||
|
filteredEp = episodes.Take(5).ToList();
|
||||||
|
}
|
||||||
if (filteredEp.Any())
|
if (filteredEp.Any())
|
||||||
{
|
{
|
||||||
var recentlyAddedModel = new List<PlexRecentlyAddedModel>();
|
var recentlyAddedModel = new List<PlexRecentlyAddedModel>();
|
||||||
|
@ -226,7 +231,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
{
|
{
|
||||||
RecentlyAddedLog.Insert(new RecentlyAddedLog
|
RecentlyAddedLog.Insert(new RecentlyAddedLog
|
||||||
{
|
{
|
||||||
ProviderId = a.ProviderId,
|
ProviderId = a.RatingKey,
|
||||||
AddedAt = DateTime.UtcNow
|
AddedAt = DateTime.UtcNow
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -335,7 +340,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var info = TvApi.ShowLookupByTheTvDbId(int.Parse(PlexHelper.GetProviderIdFromPlexGuid(t.Metadata.Directory.Guid)));
|
var info = TvApi.ShowLookupByTheTvDbId(int.Parse(PlexHelper.GetProviderIdFromPlexGuid(t?.Metadata?.Directory?.Guid ?? string.Empty)));
|
||||||
|
|
||||||
var banner = info.image?.original;
|
var banner = info.image?.original;
|
||||||
if (!string.IsNullOrEmpty(banner))
|
if (!string.IsNullOrEmpty(banner))
|
||||||
|
@ -370,7 +375,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
for (var i = 0; i < orderedEpisodes.Count; i++)
|
for (var i = 0; i < orderedEpisodes.Count; i++)
|
||||||
{
|
{
|
||||||
var ep = orderedEpisodes[i];
|
var ep = orderedEpisodes[i];
|
||||||
if (i <= orderedEpisodes.Count - 1)
|
if (i < orderedEpisodes.Count - 1)
|
||||||
{
|
{
|
||||||
epSb.Append($"{ep.Video.FirstOrDefault().Index},");
|
epSb.Append($"{ep.Video.FirstOrDefault().Index},");
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,9 @@ namespace Ombi.Store.Models
|
||||||
[Table("RecentlyAddedLog")]
|
[Table("RecentlyAddedLog")]
|
||||||
public class RecentlyAddedLog : Entity
|
public class RecentlyAddedLog : Entity
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This is actually a unique id for that content...
|
||||||
|
/// </summary>
|
||||||
public string ProviderId { get; set; }
|
public string ProviderId { get; set; }
|
||||||
public DateTime AddedAt { get; set; }
|
public DateTime AddedAt { get; set; }
|
||||||
}
|
}
|
|
@ -68,7 +68,7 @@
|
||||||
<Compile Include="Models\Emby\EmbyContent.cs" />
|
<Compile Include="Models\Emby\EmbyContent.cs" />
|
||||||
<Compile Include="Models\Emby\EmbyEpisodes.cs" />
|
<Compile Include="Models\Emby\EmbyEpisodes.cs" />
|
||||||
<Compile Include="Models\IssueBlobs.cs" />
|
<Compile Include="Models\IssueBlobs.cs" />
|
||||||
<Compile Include="Models\RecenetlyAddedLog.cs" />
|
<Compile Include="Models\RecentlyAddedLog.cs" />
|
||||||
<Compile Include="Models\Plex\PlexEpisodes.cs" />
|
<Compile Include="Models\Plex\PlexEpisodes.cs" />
|
||||||
<Compile Include="Models\Emby\EmbyUsers.cs" />
|
<Compile Include="Models\Emby\EmbyUsers.cs" />
|
||||||
<Compile Include="Models\Plex\PlexUsers.cs" />
|
<Compile Include="Models\Plex\PlexUsers.cs" />
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<button id="recentlyAddedBtn" class="btn btn-primary-outline">Send test email to Admin @Html.ToolTip("Note: nothing will send if there is no new content...")
|
<button id="recentlyAddedBtn" class="btn btn-primary-outline">Send test email to Admin @Html.ToolTip("Note: If there is nothing new when testing this, we will just grab some random titles")
|
||||||
<div id="testEmailSpinner"></div></button>
|
<div id="testEmailSpinner"></div></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,9 +3,9 @@ configuration: Release
|
||||||
assembly_info:
|
assembly_info:
|
||||||
patch: true
|
patch: true
|
||||||
file: '**\AssemblyInfo.*'
|
file: '**\AssemblyInfo.*'
|
||||||
assembly_version: '2.2.0'
|
assembly_version: '2.2.1'
|
||||||
assembly_file_version: '{version}'
|
assembly_file_version: '{version}'
|
||||||
assembly_informational_version: '2.2.0'
|
assembly_informational_version: '2.2.1'
|
||||||
before_build:
|
before_build:
|
||||||
- cmd: appveyor-retry nuget restore
|
- cmd: appveyor-retry nuget restore
|
||||||
build:
|
build:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue