123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- #nullable disable
- #pragma warning disable CS1591
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text.Json.Serialization;
- using Jellyfin.Data.Enums;
- using MediaBrowser.Controller.Providers;
- using MediaBrowser.Model.Entities;
- using MediaBrowser.Model.Providers;
- namespace MediaBrowser.Controller.Entities.Movies
- {
- /// <summary>
- /// Class Movie.
- /// </summary>
- public class Movie : Video, IHasSpecialFeatures, IHasTrailers, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
- {
- /// <inheritdoc />
- [JsonIgnore]
- public IReadOnlyList<Guid> SpecialFeatureIds => GetExtras()
- .Where(extra => extra.ExtraType != null && extra is Video)
- .Select(extra => extra.Id)
- .ToArray();
- /// <inheritdoc />
- [JsonIgnore]
- public IReadOnlyList<BaseItem> LocalTrailers => GetExtras()
- .Where(extra => extra.ExtraType == Model.Entities.ExtraType.Trailer)
- .ToArray();
- /// <summary>
- /// Gets or sets the name of the TMDB collection.
- /// </summary>
- /// <value>The name of the TMDB collection.</value>
- public string TmdbCollectionName { get; set; }
- [JsonIgnore]
- public string CollectionName
- {
- get => TmdbCollectionName;
- set => TmdbCollectionName = value;
- }
- [JsonIgnore]
- public override bool StopRefreshIfLocalMetadataFound => false;
- public override double GetDefaultPrimaryImageAspectRatio()
- {
- // hack for tv plugins
- if (SourceType == SourceType.Channel)
- {
- return 0;
- }
- return 2.0 / 3;
- }
- /// <inheritdoc />
- public override UnratedItem GetBlockUnratedType()
- {
- return UnratedItem.Movie;
- }
- public MovieInfo GetLookupInfo()
- {
- var info = GetItemLookupInfo<MovieInfo>();
- if (!IsInMixedFolder)
- {
- var name = System.IO.Path.GetFileName(ContainingFolderPath);
- if (VideoType == VideoType.VideoFile || VideoType == VideoType.Iso)
- {
- if (string.Equals(name, System.IO.Path.GetFileName(Path), StringComparison.OrdinalIgnoreCase))
- {
- // if the folder has the file extension, strip it
- name = System.IO.Path.GetFileNameWithoutExtension(name);
- }
- }
- info.Name = name;
- }
- return info;
- }
- /// <inheritdoc />
- public override bool BeforeMetadataRefresh(bool replaceAllMetadata)
- {
- var hasChanges = base.BeforeMetadataRefresh(replaceAllMetadata);
- if (!ProductionYear.HasValue)
- {
- var info = LibraryManager.ParseName(Name);
- var yearInName = info.Year;
- if (yearInName.HasValue)
- {
- ProductionYear = yearInName;
- hasChanges = true;
- }
- else
- {
- // Try to get the year from the folder name
- if (!IsInMixedFolder)
- {
- info = LibraryManager.ParseName(System.IO.Path.GetFileName(ContainingFolderPath));
- yearInName = info.Year;
- if (yearInName.HasValue)
- {
- ProductionYear = yearInName;
- hasChanges = true;
- }
- }
- }
- }
- return hasChanges;
- }
- /// <inheritdoc />
- public override List<ExternalUrl> GetRelatedUrls()
- {
- var list = base.GetRelatedUrls();
- var imdbId = this.GetProviderId(MetadataProvider.Imdb);
- if (!string.IsNullOrEmpty(imdbId))
- {
- list.Add(new ExternalUrl
- {
- Name = "Trakt",
- Url = string.Format(CultureInfo.InvariantCulture, "https://trakt.tv/movies/{0}", imdbId)
- });
- }
- return list;
- }
- }
- }
|