mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-23 17:24:46 +03:00
Moved some entities to the main project
This commit is contained in:
parent
b1df61f7ce
commit
2467ca9668
173
MediaBrowser.Controller/Entities/BaseItem.cs
Normal file
173
MediaBrowser.Controller/Entities/BaseItem.cs
Normal file
@@ -0,0 +1,173 @@
|
||||
using MediaBrowser.Model.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
public abstract class BaseItem : BaseEntity, IHasProviderIds
|
||||
{
|
||||
public string SortName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// When the item first debuted. For movies this could be premiere date, episodes would be first aired
|
||||
/// </summary>
|
||||
public DateTime? PremiereDate { get; set; }
|
||||
|
||||
public string Path { get; set; }
|
||||
|
||||
public Folder Parent { get; set; }
|
||||
|
||||
public string LogoImagePath { get; set; }
|
||||
|
||||
public string ArtImagePath { get; set; }
|
||||
|
||||
public string ThumbnailImagePath { get; set; }
|
||||
|
||||
public string BannerImagePath { get; set; }
|
||||
|
||||
public IEnumerable<string> BackdropImagePaths { get; set; }
|
||||
|
||||
public string OfficialRating { get; set; }
|
||||
|
||||
public string CustomRating { get; set; }
|
||||
public string CustomPin { get; set; }
|
||||
|
||||
public string Language { get; set; }
|
||||
public string Overview { get; set; }
|
||||
public List<string> Taglines { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Using a Dictionary to prevent duplicates
|
||||
/// </summary>
|
||||
public Dictionary<string,PersonInfo> People { get; set; }
|
||||
|
||||
public List<string> Studios { get; set; }
|
||||
|
||||
public List<string> Genres { get; set; }
|
||||
|
||||
public string DisplayMediaType { get; set; }
|
||||
|
||||
public float? UserRating { get; set; }
|
||||
public long? RunTimeTicks { get; set; }
|
||||
|
||||
public string AspectRatio { get; set; }
|
||||
public int? ProductionYear { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// If the item is part of a series, this is it's number in the series.
|
||||
/// This could be episode number, album track number, etc.
|
||||
/// </summary>
|
||||
public int? IndexNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// For an episode this could be the season number, or for a song this could be the disc number.
|
||||
/// </summary>
|
||||
public int? ParentIndexNumber { get; set; }
|
||||
|
||||
public IEnumerable<Video> LocalTrailers { get; set; }
|
||||
|
||||
public string TrailerUrl { get; set; }
|
||||
|
||||
public Dictionary<string, string> ProviderIds { get; set; }
|
||||
|
||||
public Dictionary<Guid, UserItemData> UserData { get; set; }
|
||||
|
||||
public UserItemData GetUserData(User user, bool createIfNull)
|
||||
{
|
||||
if (UserData == null || !UserData.ContainsKey(user.Id))
|
||||
{
|
||||
if (createIfNull)
|
||||
{
|
||||
AddUserData(user, new UserItemData());
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return UserData[user.Id];
|
||||
}
|
||||
|
||||
private void AddUserData(User user, UserItemData data)
|
||||
{
|
||||
if (UserData == null)
|
||||
{
|
||||
UserData = new Dictionary<Guid, UserItemData>();
|
||||
}
|
||||
|
||||
UserData[user.Id] = data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if a given user has access to this item
|
||||
/// </summary>
|
||||
internal bool IsParentalAllowed(User user)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Finds an item by ID, recursively
|
||||
/// </summary>
|
||||
public virtual BaseItem FindItemById(Guid id)
|
||||
{
|
||||
if (Id == id)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
if (LocalTrailers != null)
|
||||
{
|
||||
return LocalTrailers.FirstOrDefault(i => i.Id == id);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public virtual bool IsFolder
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines if the item is considered new based on user settings
|
||||
/// </summary>
|
||||
public bool IsRecentlyAdded(User user)
|
||||
{
|
||||
return (DateTime.UtcNow - DateCreated).TotalDays < user.RecentItemDays;
|
||||
}
|
||||
|
||||
public void AddPerson(PersonInfo person)
|
||||
{
|
||||
if (People == null)
|
||||
{
|
||||
People = new Dictionary<string, PersonInfo>(StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
People[person.Name] = person;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Marks the item as either played or unplayed
|
||||
/// </summary>
|
||||
public virtual void SetPlayedStatus(User user, bool wasPlayed)
|
||||
{
|
||||
UserItemData data = GetUserData(user, true);
|
||||
|
||||
if (wasPlayed)
|
||||
{
|
||||
data.PlayCount = Math.Max(data.PlayCount, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
data.PlayCount = 0;
|
||||
data.PlaybackPositionTicks = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user