1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-19 21:46:43 -04:00
Files
Sonarr/src/Sonarr.Api.V3/EpisodeFiles/MediaInfoResource.cs
T
2022-04-24 13:18:48 -07:00

76 lines
2.7 KiB
C#

using System;
using System.Text;
using NzbDrone.Core.MediaFiles.MediaInfo;
using Sonarr.Http.REST;
namespace Sonarr.Api.V3.EpisodeFiles
{
public class MediaInfoResource : RestResource
{
public int AudioBitrate { get; set; }
public decimal AudioChannels { get; set; }
public string AudioCodec { get; set; }
public string AudioLanguages { get; set; }
public int AudioStreamCount { get; set; }
public int VideoBitDepth { get; set; }
public int VideoBitrate { get; set; }
public string VideoCodec { get; set; }
public decimal VideoFps { get; set; }
public string VideoDynamicRange { get; set; }
public string VideoDynamicRangeType { get; set; }
public string Resolution { get; set; }
public string RunTime { get; set; }
public string ScanType { get; set; }
public string Subtitles { get; set; }
}
public static class MediaInfoResourceMapper
{
public static MediaInfoResource ToResource(this MediaInfoModel model, string sceneName)
{
if (model == null)
{
return null;
}
return new MediaInfoResource
{
AudioBitrate = model.AudioBitrate,
AudioChannels = MediaInfoFormatter.FormatAudioChannels(model),
AudioLanguages = model.AudioLanguages,
AudioStreamCount = model.AudioStreamCount,
AudioCodec = MediaInfoFormatter.FormatAudioCodec(model, sceneName),
VideoBitDepth = model.VideoBitDepth,
VideoBitrate = model.VideoBitrate,
VideoCodec = MediaInfoFormatter.FormatVideoCodec(model, sceneName),
VideoFps = model.VideoFps,
VideoDynamicRange = MediaInfoFormatter.FormatVideoDynamicRange(model),
VideoDynamicRangeType = MediaInfoFormatter.FormatVideoDynamicRangeType(model),
Resolution = $"{model.Width}x{model.Height}",
RunTime = FormatRuntime(model.RunTime),
ScanType = model.ScanType,
Subtitles = model.Subtitles
};
}
private static string FormatRuntime(TimeSpan runTime)
{
var formattedRuntime = "";
if (runTime.Hours > 0)
{
formattedRuntime += $"{runTime.Hours}:{runTime.Minutes:00}:";
}
else
{
formattedRuntime += $"{runTime.Minutes}:";
}
formattedRuntime += $"{runTime.Seconds:00}";
return formattedRuntime;
}
}
}