diff --git a/BDInfo/BDInfo.csproj b/BDInfo/BDInfo.csproj index b64f5e7a77..774e5709d6 100644 --- a/BDInfo/BDInfo.csproj +++ b/BDInfo/BDInfo.csproj @@ -1,4 +1,4 @@ - + diff --git a/BDInfo/BDInfoSettings.cs b/BDInfo/BDInfoSettings.cs index 7abb67499f..f4cb300166 100644 --- a/BDInfo/BDInfoSettings.cs +++ b/BDInfo/BDInfoSettings.cs @@ -1,105 +1,33 @@ - + namespace BDInfo { class BDInfoSettings { - public static bool GenerateStreamDiagnostics - { - get - { - return true; - } - } + public static bool GenerateStreamDiagnostics => true; - public static bool EnableSSIF - { - get - { - return true; - } - } + public static bool EnableSSIF => true; - public static bool AutosaveReport - { - get - { - return false; - } - } + public static bool AutosaveReport => false; - public static bool GenerateFrameDataFile - { - get - { - return false; - } - } + public static bool GenerateFrameDataFile => false; - public static bool FilterLoopingPlaylists - { - get - { - return true; - } - } + public static bool FilterLoopingPlaylists => true; - public static bool FilterShortPlaylists - { - get - { - return false; - } - } + public static bool FilterShortPlaylists => false; - public static int FilterShortPlaylistsValue - { - get - { - return 0; - } - } + public static int FilterShortPlaylistsValue => 0; - public static bool UseImagePrefix - { - get - { - return false; - } - } + public static bool UseImagePrefix => false; - public static string UseImagePrefixValue - { - get - { - return null; - } - } + public static string UseImagePrefixValue => null; /// /// Setting this to false throws an IComparer error on some discs. /// - public static bool KeepStreamOrder - { - get - { - return true; - } - } + public static bool KeepStreamOrder => true; - public static bool GenerateTextSummary - { - get - { - return false; - } - } + public static bool GenerateTextSummary => false; - public static string LastPath - { - get - { - return string.Empty; - } - } + public static string LastPath => string.Empty; } } diff --git a/BDInfo/BDROM.cs b/BDInfo/BDROM.cs index 7d8268222d..b747d996f1 100644 --- a/BDInfo/BDROM.cs +++ b/BDInfo/BDROM.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -164,7 +164,7 @@ namespace BDInfo if (DirectoryPLAYLIST != null) { FileSystemMetadata[] files = GetFiles(DirectoryPLAYLIST.FullName, ".mpls").ToArray(); - foreach (FileSystemMetadata file in files) + foreach (var file in files) { PlaylistFiles.Add( file.Name.ToUpper(), new TSPlaylistFile(this, file, _fileSystem, textEncoding)); @@ -174,7 +174,7 @@ namespace BDInfo if (DirectorySTREAM != null) { FileSystemMetadata[] files = GetFiles(DirectorySTREAM.FullName, ".m2ts").ToArray(); - foreach (FileSystemMetadata file in files) + foreach (var file in files) { StreamFiles.Add( file.Name.ToUpper(), new TSStreamFile(file, _fileSystem)); @@ -184,7 +184,7 @@ namespace BDInfo if (DirectoryCLIPINF != null) { FileSystemMetadata[] files = GetFiles(DirectoryCLIPINF.FullName, ".clpi").ToArray(); - foreach (FileSystemMetadata file in files) + foreach (var file in files) { StreamClipFiles.Add( file.Name.ToUpper(), new TSStreamClipFile(file, _fileSystem, textEncoding)); @@ -194,7 +194,7 @@ namespace BDInfo if (DirectorySSIF != null) { FileSystemMetadata[] files = GetFiles(DirectorySSIF.FullName, ".ssif").ToArray(); - foreach (FileSystemMetadata file in files) + foreach (var file in files) { InterleavedFiles.Add( file.Name.ToUpper(), new TSInterleavedFile(file)); @@ -214,8 +214,8 @@ namespace BDInfo public void Scan() { - List errorStreamClipFiles = new List(); - foreach (TSStreamClipFile streamClipFile in StreamClipFiles.Values) + var errorStreamClipFiles = new List(); + foreach (var streamClipFile in StreamClipFiles.Values) { try { @@ -239,7 +239,7 @@ namespace BDInfo } } - foreach (TSStreamFile streamFile in StreamFiles.Values) + foreach (var streamFile in StreamFiles.Values) { string ssifName = Path.GetFileNameWithoutExtension(streamFile.Name) + ".SSIF"; if (InterleavedFiles.ContainsKey(ssifName)) @@ -252,8 +252,8 @@ namespace BDInfo StreamFiles.Values.CopyTo(streamFiles, 0); Array.Sort(streamFiles, CompareStreamFiles); - List errorPlaylistFiles = new List(); - foreach (TSPlaylistFile playlistFile in PlaylistFiles.Values) + var errorPlaylistFiles = new List(); + foreach (var playlistFile in PlaylistFiles.Values) { try { @@ -277,15 +277,15 @@ namespace BDInfo } } - List errorStreamFiles = new List(); - foreach (TSStreamFile streamFile in streamFiles) + var errorStreamFiles = new List(); + foreach (var streamFile in streamFiles) { try { - List playlists = new List(); - foreach (TSPlaylistFile playlist in PlaylistFiles.Values) + var playlists = new List(); + foreach (var playlist in PlaylistFiles.Values) { - foreach (TSStreamClip streamClip in playlist.StreamClips) + foreach (var streamClip in playlist.StreamClips) { if (streamClip.Name == streamFile.Name) { @@ -314,12 +314,12 @@ namespace BDInfo } } - foreach (TSPlaylistFile playlistFile in PlaylistFiles.Values) + foreach (var playlistFile in PlaylistFiles.Values) { playlistFile.Initialize(); if (!Is50Hz) { - foreach (TSVideoStream videoStream in playlistFile.VideoStreams) + foreach (var videoStream in playlistFile.VideoStreams) { if (videoStream.FrameRate == TSFrameRate.FRAMERATE_25 || videoStream.FrameRate == TSFrameRate.FRAMERATE_50) @@ -369,7 +369,7 @@ namespace BDInfo if (dir != null) { FileSystemMetadata[] children = _fileSystem.GetDirectories(dir.FullName).ToArray(); - foreach (FileSystemMetadata child in children) + foreach (var child in children) { if (string.Equals(child.Name, name, StringComparison.OrdinalIgnoreCase)) { @@ -378,7 +378,7 @@ namespace BDInfo } if (searchDepth > 0) { - foreach (FileSystemMetadata child in children) + foreach (var child in children) { GetDirectory( name, child, searchDepth - 1); @@ -395,7 +395,7 @@ namespace BDInfo //if (!ExcludeDirs.Contains(directoryInfo.Name.ToUpper())) // TODO: Keep? { FileSystemMetadata[] pathFiles = _fileSystem.GetFiles(directoryInfo.FullName).ToArray(); - foreach (FileSystemMetadata pathFile in pathFiles) + foreach (var pathFile in pathFiles) { if (pathFile.Extension.ToUpper() == ".SSIF") { @@ -405,7 +405,7 @@ namespace BDInfo } FileSystemMetadata[] pathChildren = _fileSystem.GetDirectories(directoryInfo.FullName).ToArray(); - foreach (FileSystemMetadata pathChild in pathChildren) + foreach (var pathChild in pathChildren) { size += GetDirectorySize(pathChild); } diff --git a/BDInfo/LanguageCodes.cs b/BDInfo/LanguageCodes.cs index 90d0bccc43..ab2693ffbc 100644 --- a/BDInfo/LanguageCodes.cs +++ b/BDInfo/LanguageCodes.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/Properties/AssemblyInfo.cs b/BDInfo/Properties/AssemblyInfo.cs index 77bd9df2ad..788cf73666 100644 --- a/BDInfo/Properties/AssemblyInfo.cs +++ b/BDInfo/Properties/AssemblyInfo.cs @@ -15,7 +15,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCulture("")] [assembly: NeutralResourcesLanguage("en")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] diff --git a/BDInfo/ReadMe.txt b/BDInfo/ReadMe.txt index 68326d560a..e70b0b66cd 100644 --- a/BDInfo/ReadMe.txt +++ b/BDInfo/ReadMe.txt @@ -1,5 +1,5 @@ -The source is taken from the BDRom folder of this project: +The source is taken from the BDRom folder of this project: http://www.cinemasquid.com/blu-ray/tools/bdinfo -BDInfoSettings was taken from the FormSettings class, and changed so that the settings all return defaults. \ No newline at end of file +BDInfoSettings was taken from the FormSettings class, and changed so that the settings all return defaults. diff --git a/BDInfo/TSCodecAC3.cs b/BDInfo/TSCodecAC3.cs index 144141c302..35d306a19d 100644 --- a/BDInfo/TSCodecAC3.cs +++ b/BDInfo/TSCodecAC3.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -24,7 +24,7 @@ namespace BDInfo { public abstract class TSCodecAC3 { - private static byte[] eac3_blocks = new byte[] { 1, 2, 3, 6 }; + private static byte[] eac3_blocks = new byte[] { 1, 2, 3, 6 }; public static void Scan( TSAudioStream stream, diff --git a/BDInfo/TSCodecAVC.cs b/BDInfo/TSCodecAVC.cs index 43c6d6f857..5833d169f4 100644 --- a/BDInfo/TSCodecAVC.cs +++ b/BDInfo/TSCodecAVC.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecDTS.cs b/BDInfo/TSCodecDTS.cs index 904dcd986c..ff94cb7022 100644 --- a/BDInfo/TSCodecDTS.cs +++ b/BDInfo/TSCodecDTS.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecDTSHD.cs b/BDInfo/TSCodecDTSHD.cs index 3c5ad85cc5..57a136d2d5 100644 --- a/BDInfo/TSCodecDTSHD.cs +++ b/BDInfo/TSCodecDTSHD.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -211,7 +211,7 @@ namespace BDInfo // TODO if (stream.CoreStream != null) { - TSAudioStream coreStream = (TSAudioStream)stream.CoreStream; + var coreStream = (TSAudioStream)stream.CoreStream; if (coreStream.AudioMode == TSAudioMode.Extended && stream.ChannelCount == 5) { diff --git a/BDInfo/TSCodecLPCM.cs b/BDInfo/TSCodecLPCM.cs index d12674f0e8..5709d8689f 100644 --- a/BDInfo/TSCodecLPCM.cs +++ b/BDInfo/TSCodecLPCM.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecMPEG2.cs b/BDInfo/TSCodecMPEG2.cs index 1d523528e0..8bcd07d020 100644 --- a/BDInfo/TSCodecMPEG2.cs +++ b/BDInfo/TSCodecMPEG2.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecMVC.cs b/BDInfo/TSCodecMVC.cs index 80fed3886c..abff0c1b08 100644 --- a/BDInfo/TSCodecMVC.cs +++ b/BDInfo/TSCodecMVC.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecTrueHD.cs b/BDInfo/TSCodecTrueHD.cs index 6ea78614cf..5e81e162c5 100644 --- a/BDInfo/TSCodecTrueHD.cs +++ b/BDInfo/TSCodecTrueHD.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSCodecVC1.cs b/BDInfo/TSCodecVC1.cs index ce9eabdb91..e2fbbf692f 100644 --- a/BDInfo/TSCodecVC1.cs +++ b/BDInfo/TSCodecVC1.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // diff --git a/BDInfo/TSInterleavedFile.cs b/BDInfo/TSInterleavedFile.cs index 44a16bbaa6..0f35cfb2a1 100644 --- a/BDInfo/TSInterleavedFile.cs +++ b/BDInfo/TSInterleavedFile.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -17,7 +17,6 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //============================================================================= -using System.IO; using MediaBrowser.Model.IO; // TODO: Do more interesting things here... diff --git a/BDInfo/TSPlaylistFile.cs b/BDInfo/TSPlaylistFile.cs index c4e8d62ec3..ba0b37f00c 100644 --- a/BDInfo/TSPlaylistFile.cs +++ b/BDInfo/TSPlaylistFile.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -21,7 +21,6 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text; using MediaBrowser.Model.IO; using MediaBrowser.Model.Text; @@ -86,9 +85,9 @@ namespace BDInfo _fileSystem = fileSystem; _textEncoding = textEncoding; IsCustom = true; - foreach (TSStreamClip clip in clips) + foreach (var clip in clips) { - TSStreamClip newClip = new TSStreamClip( + var newClip = new TSStreamClip( clip.StreamFile, clip.StreamClipFile); newClip.Name = clip.Name; @@ -124,7 +123,7 @@ namespace BDInfo get { ulong size = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { size += clip.InterleavedFileSize; } @@ -136,7 +135,7 @@ namespace BDInfo get { ulong size = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { size += clip.FileSize; } @@ -148,7 +147,7 @@ namespace BDInfo get { double length = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { if (clip.AngleIndex == 0) { @@ -164,7 +163,7 @@ namespace BDInfo get { double length = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { length += clip.Length; } @@ -177,7 +176,7 @@ namespace BDInfo get { ulong size = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { if (clip.AngleIndex == 0) { @@ -193,7 +192,7 @@ namespace BDInfo get { ulong size = 0; - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { size += clip.PacketSize; } @@ -264,7 +263,7 @@ namespace BDInfo int itemCount = ReadInt16(data, ref pos); int subitemCount = ReadInt16(data, ref pos); - List chapterClips = new List(); + var chapterClips = new List(); for (int itemIndex = 0; itemIndex < itemCount; itemIndex++) { int itemStart = pos; @@ -311,7 +310,7 @@ namespace BDInfo if (outTime < 0) outTime &= 0x7FFFFFFF; double timeOut = (double)outTime / 45000; - TSStreamClip streamClip = new TSStreamClip( + var streamClip = new TSStreamClip( streamFile, streamClipFile); streamClip.Name = streamFileName; //TODO @@ -362,7 +361,7 @@ namespace BDInfo FileInfo.Name, angleClipFileName)); } - TSStreamClip angleClip = + var angleClip = new TSStreamClip(angleFile, angleClipFile); angleClip.AngleIndex = angle + 1; angleClip.TimeIn = streamClip.TimeIn; @@ -395,33 +394,33 @@ namespace BDInfo for (int i = 0; i < streamCountVideo; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; } for (int i = 0; i < streamCountAudio; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; } for (int i = 0; i < streamCountPG; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; } for (int i = 0; i < streamCountIG; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; } for (int i = 0; i < streamCountSecondaryAudio; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; pos += 2; } for (int i = 0; i < streamCountSecondaryVideo; i++) { - TSStream stream = CreatePlaylistStream(data, ref pos); + var stream = CreatePlaylistStream(data, ref pos); if (stream != null) PlaylistStreams[stream.PID] = stream; pos += 6; } @@ -446,7 +445,7 @@ namespace BDInfo chapterIndex < chapterCount; chapterIndex++) { - int chapterType = data[pos+1]; + int chapterType = data[pos + 1]; if (chapterType == 1) { @@ -459,7 +458,7 @@ namespace BDInfo ((long)data[pos + 6] << 8) + ((long)data[pos + 7]); - TSStreamClip streamClip = chapterClips[streamFileIndex]; + var streamClip = chapterClips[streamFileIndex]; double chapterSeconds = (double)chapterTime / 45000; @@ -499,8 +498,8 @@ namespace BDInfo { LoadStreamClips(); - Dictionary> clipTimes = new Dictionary>(); - foreach (TSStreamClip clip in StreamClips) + var clipTimes = new Dictionary>(); + foreach (var clip in StreamClips) { if (clip.AngleIndex == 0) { @@ -568,7 +567,7 @@ namespace BDInfo int streamLength = data[pos++]; int streamPos = pos; - TSStreamType streamType = (TSStreamType)data[pos++]; + var streamType = (TSStreamType)data[pos++]; switch (streamType) { case TSStreamType.MVC_VIDEO: @@ -580,11 +579,11 @@ namespace BDInfo case TSStreamType.MPEG2_VIDEO: case TSStreamType.VC1_VIDEO: - TSVideoFormat videoFormat = (TSVideoFormat) + var videoFormat = (TSVideoFormat) (data[pos] >> 4); - TSFrameRate frameRate = (TSFrameRate) + var frameRate = (TSFrameRate) (data[pos] & 0xF); - TSAspectRatio aspectRatio = (TSAspectRatio) + var aspectRatio = (TSAspectRatio) (data[pos + 1] >> 4); stream = new TSVideoStream(); @@ -618,9 +617,9 @@ namespace BDInfo int audioFormat = ReadByte(data, ref pos); - TSChannelLayout channelLayout = (TSChannelLayout) + var channelLayout = (TSChannelLayout) (audioFormat >> 4); - TSSampleRate sampleRate = (TSSampleRate) + var sampleRate = (TSSampleRate) (audioFormat & 0xF); string audioLanguage = ReadString(data, 3, ref pos); @@ -713,7 +712,7 @@ namespace BDInfo { referenceClip = StreamClips[0]; } - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { if (clip.StreamClipFile.Streams.Count > referenceClip.StreamClipFile.Streams.Count) { @@ -739,12 +738,12 @@ namespace BDInfo } } - foreach (TSStream clipStream + foreach (var clipStream in referenceClip.StreamClipFile.Streams.Values) { if (!Streams.ContainsKey(clipStream.PID)) { - TSStream stream = clipStream.Clone(); + var stream = clipStream.Clone(); Streams[clipStream.PID] = stream; if (!IsCustom && !PlaylistStreams.ContainsKey(stream.PID)) @@ -780,7 +779,7 @@ namespace BDInfo referenceClip.StreamFile.Streams.ContainsKey(4114) && !Streams.ContainsKey(4114)) { - TSStream stream = referenceClip.StreamFile.Streams[4114].Clone(); + var stream = referenceClip.StreamFile.Streams[4114].Clone(); Streams[4114] = stream; if (stream.IsVideoStream) { @@ -788,12 +787,12 @@ namespace BDInfo } } - foreach (TSStream clipStream + foreach (var clipStream in referenceClip.StreamFile.Streams.Values) { if (Streams.ContainsKey(clipStream.PID)) { - TSStream stream = Streams[clipStream.PID]; + var stream = Streams[clipStream.PID]; if (stream.StreamType != clipStream.StreamType) continue; @@ -812,8 +811,8 @@ namespace BDInfo else if (stream.IsAudioStream && clipStream.IsAudioStream) { - TSAudioStream audioStream = (TSAudioStream)stream; - TSAudioStream clipAudioStream = (TSAudioStream)clipStream; + var audioStream = (TSAudioStream)stream; + var clipAudioStream = (TSAudioStream)clipStream; if (clipAudioStream.ChannelCount > audioStream.ChannelCount) { @@ -864,7 +863,7 @@ namespace BDInfo SortedStreams.Add(stream); for (int i = 0; i < AngleCount; i++) { - TSStream angleStream = stream.Clone(); + var angleStream = stream.Clone(); angleStream.AngleIndex = i + 1; AngleStreams[i][angleStream.PID] = angleStream; SortedStreams.Add(angleStream); @@ -901,7 +900,7 @@ namespace BDInfo public void ClearBitrates() { - foreach (TSStreamClip clip in StreamClips) + foreach (var clip in StreamClips) { clip.PayloadBytes = 0; clip.PacketCount = 0; @@ -909,7 +908,7 @@ namespace BDInfo if (clip.StreamFile != null) { - foreach (TSStream stream in clip.StreamFile.Streams.Values) + foreach (var stream in clip.StreamFile.Streams.Values) { stream.PayloadBytes = 0; stream.PacketCount = 0; @@ -924,7 +923,7 @@ namespace BDInfo } } - foreach (TSStream stream in SortedStreams) + foreach (var stream in SortedStreams) { stream.PayloadBytes = 0; stream.PacketCount = 0; diff --git a/BDInfo/TSStream.cs b/BDInfo/TSStream.cs index 250308b1a8..3c30a85971 100644 --- a/BDInfo/TSStream.cs +++ b/BDInfo/TSStream.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -109,7 +109,7 @@ namespace BDInfo public TSDescriptor Clone() { - TSDescriptor descriptor = + var descriptor = new TSDescriptor(Name, (byte)Value.Length); Value.CopyTo(descriptor.Value, 0); return descriptor; @@ -142,21 +142,12 @@ namespace BDInfo public double PacketSeconds = 0; public int AngleIndex = 0; - public ulong PacketSize - { - get - { - return PacketCount * 192; - } - } + public ulong PacketSize => PacketCount * 192; private string _LanguageCode; public string LanguageCode { - get - { - return _LanguageCode; - } + get => _LanguageCode; set { _LanguageCode = value; @@ -398,13 +389,7 @@ namespace BDInfo } } - public virtual string Description - { - get - { - return ""; - } - } + public virtual string Description => ""; public abstract TSStream Clone(); @@ -419,7 +404,7 @@ namespace BDInfo if (Descriptors != null) { stream.Descriptors = new List(); - foreach (TSDescriptor descriptor in Descriptors) + foreach (var descriptor in Descriptors) { stream.Descriptors.Add(descriptor.Clone()); } @@ -444,10 +429,7 @@ namespace BDInfo private TSVideoFormat _VideoFormat; public TSVideoFormat VideoFormat { - get - { - return _VideoFormat; - } + get => _VideoFormat; set { _VideoFormat = value; @@ -488,10 +470,7 @@ namespace BDInfo private TSFrameRate _FrameRate; public TSFrameRate FrameRate { - get - { - return _FrameRate; - } + get => _FrameRate; set { _FrameRate = value; @@ -574,7 +553,7 @@ namespace BDInfo public override TSStream Clone() { - TSVideoStream stream = new TSVideoStream(); + var stream = new TSVideoStream(); CopyTo(stream); stream.VideoFormat = _VideoFormat; @@ -748,7 +727,7 @@ namespace BDInfo public override TSStream Clone() { - TSAudioStream stream = new TSAudioStream(); + var stream = new TSAudioStream(); CopyTo(stream); stream.SampleRate = SampleRate; @@ -777,7 +756,7 @@ namespace BDInfo public override TSStream Clone() { - TSGraphicsStream stream = new TSGraphicsStream(); + var stream = new TSGraphicsStream(); CopyTo(stream); return stream; } @@ -793,7 +772,7 @@ namespace BDInfo public override TSStream Clone() { - TSTextStream stream = new TSTextStream(); + var stream = new TSTextStream(); CopyTo(stream); return stream; } diff --git a/BDInfo/TSStreamBuffer.cs b/BDInfo/TSStreamBuffer.cs index 2f9094876e..30bd1a3f44 100644 --- a/BDInfo/TSStreamBuffer.cs +++ b/BDInfo/TSStreamBuffer.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -37,21 +37,9 @@ namespace BDInfo Stream = new MemoryStream(Buffer); } - public long Length - { - get - { - return (long)BufferLength; - } - } + public long Length => (long)BufferLength; - public long Position - { - get - { - return Stream.Position; - } - } + public long Position => Stream.Position; public void Add( byte[] buffer, @@ -123,7 +111,7 @@ namespace BDInfo data += (Stream.ReadByte() << shift); shift -= 8; } - BitVector32 vector = new BitVector32(data); + var vector = new BitVector32(data); int value = 0; for (int i = SkipBits; i < SkipBits + bits; i++) diff --git a/BDInfo/TSStreamClip.cs b/BDInfo/TSStreamClip.cs index d7592a71aa..295eeb6b18 100644 --- a/BDInfo/TSStreamClip.cs +++ b/BDInfo/TSStreamClip.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -74,13 +74,7 @@ namespace BDInfo } } - public ulong PacketSize - { - get - { - return PacketCount * 192; - } - } + public ulong PacketSize => PacketCount * 192; public ulong PacketBitRate { @@ -96,11 +90,11 @@ namespace BDInfo public bool IsCompatible(TSStreamClip clip) { - foreach (TSStream stream1 in StreamFile.Streams.Values) + foreach (var stream1 in StreamFile.Streams.Values) { if (clip.StreamFile.Streams.ContainsKey(stream1.PID)) { - TSStream stream2 = clip.StreamFile.Streams[stream1.PID]; + var stream2 = clip.StreamFile.Streams[stream1.PID]; if (stream1.StreamType != stream2.StreamType) { return false; diff --git a/BDInfo/TSStreamClipFile.cs b/BDInfo/TSStreamClipFile.cs index f311dd8390..be6299e1a8 100644 --- a/BDInfo/TSStreamClipFile.cs +++ b/BDInfo/TSStreamClipFile.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -21,7 +21,6 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text; using MediaBrowser.Model.IO; using MediaBrowser.Model.Text; @@ -37,7 +36,7 @@ namespace BDInfo public string Name = null; public Dictionary Streams = - new Dictionary(); + new Dictionary(); public TSStreamClipFile( FileSystemMetadata fileInfo, IFileSystem fileSystem, ITextEncoding textEncoding) @@ -115,7 +114,7 @@ namespace BDInfo streamOffset += 2; - TSStreamType streamType = (TSStreamType) + var streamType = (TSStreamType) clipData[streamOffset + 1]; switch (streamType) { @@ -127,18 +126,18 @@ namespace BDInfo case TSStreamType.MPEG1_VIDEO: case TSStreamType.MPEG2_VIDEO: case TSStreamType.VC1_VIDEO: - { - TSVideoFormat videoFormat = (TSVideoFormat) - (clipData[streamOffset + 2] >> 4); - TSFrameRate frameRate = (TSFrameRate) - (clipData[streamOffset + 2] & 0xF); - TSAspectRatio aspectRatio = (TSAspectRatio) - (clipData[streamOffset + 3] >> 4); - - stream = new TSVideoStream(); - ((TSVideoStream)stream).VideoFormat = videoFormat; - ((TSVideoStream)stream).AspectRatio = aspectRatio; - ((TSVideoStream)stream).FrameRate = frameRate; + { + var videoFormat = (TSVideoFormat) + (clipData[streamOffset + 2] >> 4); + var frameRate = (TSFrameRate) + (clipData[streamOffset + 2] & 0xF); + var aspectRatio = (TSAspectRatio) + (clipData[streamOffset + 3] >> 4); + + stream = new TSVideoStream(); + ((TSVideoStream)stream).VideoFormat = videoFormat; + ((TSVideoStream)stream).AspectRatio = aspectRatio; + ((TSVideoStream)stream).FrameRate = frameRate; #if DEBUG Debug.WriteLine(string.Format( "\t{0} {1} {2} {3} {4}", @@ -148,8 +147,8 @@ namespace BDInfo frameRate, aspectRatio)); #endif - } - break; + } + break; case TSStreamType.AC3_AUDIO: case TSStreamType.AC3_PLUS_AUDIO: @@ -162,23 +161,23 @@ namespace BDInfo case TSStreamType.LPCM_AUDIO: case TSStreamType.MPEG1_AUDIO: case TSStreamType.MPEG2_AUDIO: - { - byte[] languageBytes = new byte[3]; - Array.Copy(clipData, streamOffset + 3, - languageBytes, 0, languageBytes.Length); - string languageCode = - _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); - - TSChannelLayout channelLayout = (TSChannelLayout) - (clipData[streamOffset + 2] >> 4); - TSSampleRate sampleRate = (TSSampleRate) - (clipData[streamOffset + 2] & 0xF); - - stream = new TSAudioStream(); - ((TSAudioStream)stream).LanguageCode = languageCode; - ((TSAudioStream)stream).ChannelLayout = channelLayout; - ((TSAudioStream)stream).SampleRate = TSAudioStream.ConvertSampleRate(sampleRate); - ((TSAudioStream)stream).LanguageCode = languageCode; + { + byte[] languageBytes = new byte[3]; + Array.Copy(clipData, streamOffset + 3, + languageBytes, 0, languageBytes.Length); + string languageCode = + _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); + + var channelLayout = (TSChannelLayout) + (clipData[streamOffset + 2] >> 4); + var sampleRate = (TSSampleRate) + (clipData[streamOffset + 2] & 0xF); + + stream = new TSAudioStream(); + ((TSAudioStream)stream).LanguageCode = languageCode; + ((TSAudioStream)stream).ChannelLayout = channelLayout; + ((TSAudioStream)stream).SampleRate = TSAudioStream.ConvertSampleRate(sampleRate); + ((TSAudioStream)stream).LanguageCode = languageCode; #if DEBUG Debug.WriteLine(string.Format( "\t{0} {1} {2} {3} {4}", @@ -188,20 +187,20 @@ namespace BDInfo channelLayout, sampleRate)); #endif - } - break; + } + break; case TSStreamType.INTERACTIVE_GRAPHICS: case TSStreamType.PRESENTATION_GRAPHICS: - { - byte[] languageBytes = new byte[3]; - Array.Copy(clipData, streamOffset + 2, - languageBytes, 0, languageBytes.Length); - string languageCode = - _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); + { + byte[] languageBytes = new byte[3]; + Array.Copy(clipData, streamOffset + 2, + languageBytes, 0, languageBytes.Length); + string languageCode = + _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); stream = new TSGraphicsStream(); - stream.LanguageCode = languageCode; + stream.LanguageCode = languageCode; #if DEBUG Debug.WriteLine(string.Format( "\t{0} {1} {2}", @@ -209,16 +208,16 @@ namespace BDInfo streamType, languageCode)); #endif - } - break; + } + break; case TSStreamType.SUBTITLE: - { - byte[] languageBytes = new byte[3]; - Array.Copy(clipData, streamOffset + 3, - languageBytes, 0, languageBytes.Length); - string languageCode = - _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); + { + byte[] languageBytes = new byte[3]; + Array.Copy(clipData, streamOffset + 3, + languageBytes, 0, languageBytes.Length); + string languageCode = + _textEncoding.GetASCIIEncoding().GetString(languageBytes, 0, languageBytes.Length); #if DEBUG Debug.WriteLine(string.Format( "\t{0} {1} {2}", @@ -227,9 +226,9 @@ namespace BDInfo languageCode)); #endif stream = new TSTextStream(); - stream.LanguageCode = languageCode; - } - break; + stream.LanguageCode = languageCode; + } + break; } if (stream != null) diff --git a/BDInfo/TSStreamFile.cs b/BDInfo/TSStreamFile.cs index 00e6b338e0..ecf6609e2e 100644 --- a/BDInfo/TSStreamFile.cs +++ b/BDInfo/TSStreamFile.cs @@ -1,4 +1,4 @@ -//============================================================================ +//============================================================================ // BDInfo - Blu-ray Video and Audio Analysis Tool // Copyright © 2010 Cinema Squid // @@ -283,7 +283,7 @@ namespace BDInfo bool isAVC = false; bool isMVC = false; - foreach (TSStream finishedStream in Streams.Values) + foreach (var finishedStream in Streams.Values) { if (!finishedStream.IsInitialized) { @@ -327,10 +327,10 @@ namespace BDInfo UpdateStreamBitrate(PID, PTSPID, PTS, PTSDiff); } - foreach (TSPlaylistFile playlist in Playlists) + foreach (var playlist in Playlists) { double packetSeconds = 0; - foreach (TSStreamClip clip in playlist.StreamClips) + foreach (var clip in playlist.StreamClips) { if (clip.AngleIndex == 0) { @@ -339,7 +339,7 @@ namespace BDInfo } if (packetSeconds > 0) { - foreach (TSStream playlistStream in playlist.SortedStreams) + foreach (var playlistStream in playlist.SortedStreams) { if (playlistStream.IsVBR) { @@ -366,14 +366,14 @@ namespace BDInfo { if (Playlists == null) return; - TSStreamState streamState = StreamStates[PID]; + var streamState = StreamStates[PID]; double streamTime = (double)PTS / 90000; double streamInterval = (double)PTSDiff / 90000; double streamOffset = streamTime + streamInterval; - foreach (TSPlaylistFile playlist in Playlists) + foreach (var playlist in Playlists) { - foreach (TSStreamClip clip in playlist.StreamClips) + foreach (var clip in playlist.StreamClips) { if (clip.Name != this.Name) continue; @@ -390,7 +390,7 @@ namespace BDInfo clip.PacketSeconds = streamOffset - clip.TimeIn; } - Dictionary playlistStreams = playlist.Streams; + var playlistStreams = playlist.Streams; if (clip.AngleIndex > 0 && clip.AngleIndex < playlist.AngleStreams.Count + 1) { @@ -398,7 +398,7 @@ namespace BDInfo } if (playlistStreams.ContainsKey(PID)) { - TSStream stream = playlistStreams[PID]; + var stream = playlistStreams[PID]; stream.PayloadBytes += streamState.WindowBytes; stream.PacketCount += streamState.WindowPackets; @@ -425,13 +425,13 @@ namespace BDInfo if (Streams.ContainsKey(PID)) { - TSStream stream = Streams[PID]; + var stream = Streams[PID]; stream.PayloadBytes += streamState.WindowBytes; stream.PacketCount += streamState.WindowPackets; if (stream.IsVideoStream) { - TSStreamDiagnostics diag = new TSStreamDiagnostics(); + var diag = new TSStreamDiagnostics(); diag.Marker = (double)PTS / 90000; diag.Interval = (double)PTSDiff / 90000; diag.Bytes = streamState.WindowBytes; @@ -482,7 +482,7 @@ namespace BDInfo StreamStates.Clear(); StreamDiagnostics.Clear(); - TSPacketParser parser = + var parser = new TSPacketParser(); long fileLength = (uint)fileStream.Length; @@ -536,80 +536,80 @@ namespace BDInfo switch (parser.HeaderParse) { case 2: - { - parser.TransportErrorIndicator = - (byte)((buffer[i] >> 7) & 0x1); - parser.PayloadUnitStartIndicator = - (byte)((buffer[i] >> 6) & 0x1); - parser.TransportPriority = - (byte)((buffer[i] >> 5) & 0x1); - parser.PID = - (ushort)((buffer[i] & 0x1f) << 8); - } - break; - - case 1: - { - parser.PID |= (ushort)buffer[i]; - if (Streams.ContainsKey(parser.PID)) - { - parser.Stream = Streams[parser.PID]; - } - else { - parser.Stream = null; + parser.TransportErrorIndicator = + (byte)((buffer[i] >> 7) & 0x1); + parser.PayloadUnitStartIndicator = + (byte)((buffer[i] >> 6) & 0x1); + parser.TransportPriority = + (byte)((buffer[i] >> 5) & 0x1); + parser.PID = + (ushort)((buffer[i] & 0x1f) << 8); } - if (!StreamStates.ContainsKey(parser.PID)) - { - StreamStates[parser.PID] = new TSStreamState(); - } - parser.StreamState = StreamStates[parser.PID]; - parser.StreamState.TotalPackets++; - parser.StreamState.WindowPackets++; - parser.TotalPackets++; - } - break; + break; - case 0: - { - parser.TransportScramblingControl = - (byte)((buffer[i] >> 6) & 0x3); - parser.AdaptionFieldControl = - (byte)((buffer[i] >> 4) & 0x3); - - if ((parser.AdaptionFieldControl & 0x2) == 0x2) - { - parser.AdaptionFieldState = true; - } - if (parser.PayloadUnitStartIndicator == 1) + case 1: { - if (parser.PID == 0) + parser.PID |= (ushort)buffer[i]; + if (Streams.ContainsKey(parser.PID)) { - parser.PATSectionStart = true; + parser.Stream = Streams[parser.PID]; } - else if (parser.PID == parser.PMTPID) + else { - parser.PMTSectionStart = true; + parser.Stream = null; } - else if (parser.StreamState != null && - parser.StreamState.TransferState) + if (!StreamStates.ContainsKey(parser.PID)) { - parser.StreamState.TransferState = false; - parser.StreamState.TransferCount++; + StreamStates[parser.PID] = new TSStreamState(); + } + parser.StreamState = StreamStates[parser.PID]; + parser.StreamState.TotalPackets++; + parser.StreamState.WindowPackets++; + parser.TotalPackets++; + } + break; - bool isFinished = ScanStream( - parser.Stream, - parser.StreamState, - parser.StreamState.StreamBuffer); + case 0: + { + parser.TransportScramblingControl = + (byte)((buffer[i] >> 6) & 0x3); + parser.AdaptionFieldControl = + (byte)((buffer[i] >> 4) & 0x3); - if (!isFullScan && isFinished) + if ((parser.AdaptionFieldControl & 0x2) == 0x2) + { + parser.AdaptionFieldState = true; + } + if (parser.PayloadUnitStartIndicator == 1) + { + if (parser.PID == 0) + { + parser.PATSectionStart = true; + } + else if (parser.PID == parser.PMTPID) + { + parser.PMTSectionStart = true; + } + else if (parser.StreamState != null && + parser.StreamState.TransferState) { - return; + parser.StreamState.TransferState = false; + parser.StreamState.TransferCount++; + + bool isFinished = ScanStream( + parser.Stream, + parser.StreamState, + parser.StreamState.StreamBuffer); + + if (!isFullScan && isFinished) + { + return; + } } } } - } - break; + break; } } else if (parser.AdaptionFieldState) @@ -670,7 +670,8 @@ namespace BDInfo parser.PAT[parser.PATOffset++] = buffer[i++]; parser.PATSectionLength--; parser.PacketLength--; - } --i; + } + --i; if (parser.PATSectionLength == 0) { @@ -801,7 +802,8 @@ namespace BDInfo PMT[parser.PMTOffset++] = buffer[i++]; --parser.PMTSectionLength; --parser.PacketLength; - } --i; + } + --i; if (parser.PMTSectionLength == 0) { @@ -837,7 +839,7 @@ namespace BDInfo if (!Streams.ContainsKey(streamPID)) { - List streamDescriptors = + var streamDescriptors = new List(); /* @@ -994,7 +996,7 @@ namespace BDInfo { --parser.PMTProgramDescriptorLength; - TSDescriptor descriptor = parser.PMTProgramDescriptors[ + var descriptor = parser.PMTProgramDescriptors[ parser.PMTProgramDescriptors.Count - 1]; int valueIndex = @@ -1024,8 +1026,8 @@ namespace BDInfo parser.StreamState != null && parser.TransportScramblingControl == 0) { - TSStream stream = parser.Stream; - TSStreamState streamState = parser.StreamState; + var stream = parser.Stream; + var streamState = parser.StreamState; streamState.Parse = (streamState.Parse << 8) + buffer[i]; @@ -1459,7 +1461,7 @@ namespace BDInfo ulong PTSLast = 0; ulong PTSDiff = 0; - foreach (TSStream stream in Streams.Values) + foreach (var stream in Streams.Values) { if (!stream.IsVideoStream) continue; @@ -1495,10 +1497,10 @@ namespace BDInfo case TSStreamType.MPEG1_VIDEO: case TSStreamType.MPEG2_VIDEO: case TSStreamType.VC1_VIDEO: - { - stream = new TSVideoStream(); - } - break; + { + stream = new TSVideoStream(); + } + break; case TSStreamType.AC3_AUDIO: case TSStreamType.AC3_PLUS_AUDIO: @@ -1511,23 +1513,23 @@ namespace BDInfo case TSStreamType.LPCM_AUDIO: case TSStreamType.MPEG1_AUDIO: case TSStreamType.MPEG2_AUDIO: - { - stream = new TSAudioStream(); - } - break; + { + stream = new TSAudioStream(); + } + break; case TSStreamType.INTERACTIVE_GRAPHICS: case TSStreamType.PRESENTATION_GRAPHICS: - { - stream = new TSGraphicsStream(); - } - break; + { + stream = new TSGraphicsStream(); + } + break; case TSStreamType.SUBTITLE: - { - stream = new TSTextStream(); - } - break; + { + stream = new TSTextStream(); + } + break; default: break; diff --git a/DvdLib/BigEndianBinaryReader.cs b/DvdLib/BigEndianBinaryReader.cs index 56d9db8255..b3b2eabd5c 100644 --- a/DvdLib/BigEndianBinaryReader.cs +++ b/DvdLib/BigEndianBinaryReader.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System; using System.IO; namespace DvdLib diff --git a/DvdLib/DvdLib.csproj b/DvdLib/DvdLib.csproj index b64f5e7a77..774e5709d6 100644 --- a/DvdLib/DvdLib.csproj +++ b/DvdLib/DvdLib.csproj @@ -1,4 +1,4 @@ - + diff --git a/DvdLib/Ifo/AudioAttributes.cs b/DvdLib/Ifo/AudioAttributes.cs index 5b3b9fd9a0..b76f9fc05e 100644 --- a/DvdLib/Ifo/AudioAttributes.cs +++ b/DvdLib/Ifo/AudioAttributes.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - namespace DvdLib.Ifo { public enum AudioCodec diff --git a/DvdLib/Ifo/Cell.cs b/DvdLib/Ifo/Cell.cs index d0f442e362..268ab897ee 100644 --- a/DvdLib/Ifo/Cell.cs +++ b/DvdLib/Ifo/Cell.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; namespace DvdLib.Ifo diff --git a/DvdLib/Ifo/CellPlaybackInfo.cs b/DvdLib/Ifo/CellPlaybackInfo.cs index ae3883eaa0..e588e51ac0 100644 --- a/DvdLib/Ifo/CellPlaybackInfo.cs +++ b/DvdLib/Ifo/CellPlaybackInfo.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; namespace DvdLib.Ifo diff --git a/DvdLib/Ifo/CellPositionInfo.cs b/DvdLib/Ifo/CellPositionInfo.cs index 2e07159402..2b973e0830 100644 --- a/DvdLib/Ifo/CellPositionInfo.cs +++ b/DvdLib/Ifo/CellPositionInfo.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; namespace DvdLib.Ifo diff --git a/DvdLib/Ifo/Chapter.cs b/DvdLib/Ifo/Chapter.cs index 802c6ce62a..bd3bd97040 100644 --- a/DvdLib/Ifo/Chapter.cs +++ b/DvdLib/Ifo/Chapter.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - namespace DvdLib.Ifo { public class Chapter diff --git a/DvdLib/Ifo/Dvd.cs b/DvdLib/Ifo/Dvd.cs index b43f0e8326..f784be83e7 100644 --- a/DvdLib/Ifo/Dvd.cs +++ b/DvdLib/Ifo/Dvd.cs @@ -1,9 +1,7 @@ -using System; +using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; -using System.Diagnostics; +using System.Linq; using MediaBrowser.Model.IO; namespace DvdLib.Ifo @@ -33,10 +31,9 @@ namespace DvdLib.Ifo foreach (var ifo in allIfos) { var num = ifo.Name.Split('_').ElementAtOrDefault(1); - ushort ifoNumber; var numbersRead = new List(); - if (!string.IsNullOrEmpty(num) && ushort.TryParse(num, out ifoNumber) && !numbersRead.Contains(ifoNumber)) + if (!string.IsNullOrEmpty(num) && ushort.TryParse(num, out var ifoNumber) && !numbersRead.Contains(ifoNumber)) { ReadVTS(ifoNumber, ifo.FullName); numbersRead.Add(ifoNumber); @@ -47,7 +44,7 @@ namespace DvdLib.Ifo { using (var vmgFs = _fileSystem.GetFileStream(vmgPath.FullName, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read)) { - using (BigEndianBinaryReader vmgRead = new BigEndianBinaryReader(vmgFs)) + using (var vmgRead = new BigEndianBinaryReader(vmgFs)) { vmgFs.Seek(0x3E, SeekOrigin.Begin); _titleSetCount = vmgRead.ReadUInt16(); @@ -73,7 +70,7 @@ namespace DvdLib.Ifo read.BaseStream.Seek(6, SeekOrigin.Current); for (uint titleNum = 1; titleNum <= _titleCount; titleNum++) { - Title t = new Title(titleNum); + var t = new Title(titleNum); t.ParseTT_SRPT(read); Titles.Add(t); } @@ -100,7 +97,7 @@ namespace DvdLib.Ifo using (var vtsFs = _fileSystem.GetFileStream(vtsPath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read)) { - using (BigEndianBinaryReader vtsRead = new BigEndianBinaryReader(vtsFs)) + using (var vtsRead = new BigEndianBinaryReader(vtsFs)) { // Read VTS_PTT_SRPT vtsFs.Seek(0xC8, SeekOrigin.Begin); @@ -121,7 +118,7 @@ namespace DvdLib.Ifo { uint chapNum = 1; vtsFs.Seek(baseAddr + offsets[titleNum], SeekOrigin.Begin); - Title t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum + 1)); + var t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum + 1)); if (t == null) continue; do @@ -151,11 +148,11 @@ namespace DvdLib.Ifo vtsFs.Seek(3, SeekOrigin.Current); uint vtsPgcOffset = vtsRead.ReadUInt32(); - Title t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum)); + var t = Titles.FirstOrDefault(vtst => vtst.IsVTSTitle(vtsNum, titleNum)); if (t != null) t.AddPgc(vtsRead, startByte + vtsPgcOffset, entryPgc, pgcNum); } } } } } -} \ No newline at end of file +} diff --git a/DvdLib/Ifo/DvdTime.cs b/DvdLib/Ifo/DvdTime.cs index 072cd8d880..3688089ec7 100644 --- a/DvdLib/Ifo/DvdTime.cs +++ b/DvdLib/Ifo/DvdTime.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace DvdLib.Ifo { diff --git a/DvdLib/Ifo/PgcCommandTable.cs b/DvdLib/Ifo/PgcCommandTable.cs index 2ead78cef9..d329fcba2a 100644 --- a/DvdLib/Ifo/PgcCommandTable.cs +++ b/DvdLib/Ifo/PgcCommandTable.cs @@ -1,7 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; namespace DvdLib.Ifo { diff --git a/DvdLib/Ifo/Program.cs b/DvdLib/Ifo/Program.cs index 48870d9dd0..af08afa356 100644 --- a/DvdLib/Ifo/Program.cs +++ b/DvdLib/Ifo/Program.cs @@ -1,7 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; namespace DvdLib.Ifo { diff --git a/DvdLib/Ifo/ProgramChain.cs b/DvdLib/Ifo/ProgramChain.cs index 85dfcea057..80889738f1 100644 --- a/DvdLib/Ifo/ProgramChain.cs +++ b/DvdLib/Ifo/ProgramChain.cs @@ -1,8 +1,6 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; +using System.Linq; namespace DvdLib.Ifo { @@ -89,7 +87,7 @@ namespace DvdLib.Ifo br.BaseStream.Seek(startPos + _cellPositionOffset, SeekOrigin.Begin); for (int cellNum = 0; cellNum < _cellCount; cellNum++) { - Cell c = new Cell(); + var c = new Cell(); c.ParsePosition(br); Cells.Add(c); } @@ -101,12 +99,12 @@ namespace DvdLib.Ifo } br.BaseStream.Seek(startPos + _programMapOffset, SeekOrigin.Begin); - List cellNumbers = new List(); + var cellNumbers = new List(); for (int progNum = 0; progNum < _programCount; progNum++) cellNumbers.Add(br.ReadByte() - 1); for (int i = 0; i < cellNumbers.Count; i++) { - int max = (i + 1 == cellNumbers.Count) ? _cellCount : cellNumbers[i+1]; + int max = (i + 1 == cellNumbers.Count) ? _cellCount : cellNumbers[i + 1]; Programs.Add(new Program(Cells.Where((c, idx) => idx >= cellNumbers[i] && idx < max).ToList())); } } diff --git a/DvdLib/Ifo/Title.cs b/DvdLib/Ifo/Title.cs index 6ef83b4fb1..335e929928 100644 --- a/DvdLib/Ifo/Title.cs +++ b/DvdLib/Ifo/Title.cs @@ -1,7 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.IO; namespace DvdLib.Ifo @@ -53,7 +50,7 @@ namespace DvdLib.Ifo long curPos = br.BaseStream.Position; br.BaseStream.Seek(startByte, SeekOrigin.Begin); - ProgramChain pgc = new ProgramChain(pgcNum); + var pgc = new ProgramChain(pgcNum); pgc.ParseHeader(br); ProgramChains.Add(pgc); if (entryPgc) EntryProgramChain = pgc; diff --git a/DvdLib/Ifo/UserOperation.cs b/DvdLib/Ifo/UserOperation.cs index c3cffd4870..757a5a05db 100644 --- a/DvdLib/Ifo/UserOperation.cs +++ b/DvdLib/Ifo/UserOperation.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System; namespace DvdLib.Ifo { diff --git a/DvdLib/Ifo/VideoAttributes.cs b/DvdLib/Ifo/VideoAttributes.cs index b2d3759426..8b3996715c 100644 --- a/DvdLib/Ifo/VideoAttributes.cs +++ b/DvdLib/Ifo/VideoAttributes.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - namespace DvdLib.Ifo { public enum VideoCodec diff --git a/DvdLib/Properties/AssemblyInfo.cs b/DvdLib/Properties/AssemblyInfo.cs index 54e2c6b447..5fc055d1f0 100644 --- a/DvdLib/Properties/AssemblyInfo.cs +++ b/DvdLib/Properties/AssemblyInfo.cs @@ -15,7 +15,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCulture("")] [assembly: NeutralResourcesLanguage("en")] -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] diff --git a/Emby.Dlna/Api/DlnaServerService.cs b/Emby.Dlna/Api/DlnaServerService.cs index 194ae73e06..01c9fe50f5 100644 --- a/Emby.Dlna/Api/DlnaServerService.cs +++ b/Emby.Dlna/Api/DlnaServerService.cs @@ -1,14 +1,14 @@ -using MediaBrowser.Controller.Dlna; using System; using System.Collections.Generic; using System.IO; +using System.Linq; +using System.Text; using System.Threading.Tasks; -using MediaBrowser.Model.Services; +using Emby.Dlna.Main; using MediaBrowser.Common.Extensions; -using System.Text; +using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Net; -using System.Linq; -using Emby.Dlna.Main; +using MediaBrowser.Model.Services; namespace Emby.Dlna.Api { @@ -115,29 +115,11 @@ namespace Emby.Dlna.Api public IRequest Request { get; set; } private IHttpResultFactory _resultFactory; - private IContentDirectory ContentDirectory - { - get - { - return DlnaEntryPoint.Current.ContentDirectory; - } - } + private IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory; - private IConnectionManager ConnectionManager - { - get - { - return DlnaEntryPoint.Current.ConnectionManager; - } - } + private IConnectionManager ConnectionManager => DlnaEntryPoint.Current.ConnectionManager; - private IMediaReceiverRegistrar MediaReceiverRegistrar - { - get - { - return DlnaEntryPoint.Current.MediaReceiverRegistrar; - } - } + private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar; public DlnaServerService(IDlnaManager dlnaManager, IHttpResultFactory httpResultFactory) { @@ -227,7 +209,7 @@ namespace Emby.Dlna.Api // TODO: Work out what this is doing. if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) || string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase) || - string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase )) + string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase)) { index++; } @@ -259,7 +241,7 @@ namespace Emby.Dlna.Api var cacheLength = TimeSpan.FromDays(365); var cacheKey = Request.RawUrl.GetMD5(); - return _resultFactory.GetStaticResult(Request, cacheKey, null, cacheLength, contentType, () => Task.FromResult(_dlnaManager.GetIcon(request.Filename).Stream)); + return _resultFactory.GetStaticResult(Request, cacheKey, null, cacheLength, contentType, () => Task.FromResult(_dlnaManager.GetIcon(request.Filename).Stream)); } public object Subscribe(ProcessContentDirectoryEventRequest request) diff --git a/Emby.Dlna/Api/DlnaService.cs b/Emby.Dlna/Api/DlnaService.cs index fec610d230..7f51f477a7 100644 --- a/Emby.Dlna/Api/DlnaService.cs +++ b/Emby.Dlna/Api/DlnaService.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Dlna; @@ -80,4 +80,4 @@ namespace Emby.Dlna.Api _dlnaManager.CreateProfile(request); } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/Common/Argument.cs b/Emby.Dlna/Common/Argument.cs index e6a220a7f4..3e325c41ce 100644 --- a/Emby.Dlna/Common/Argument.cs +++ b/Emby.Dlna/Common/Argument.cs @@ -1,12 +1,12 @@ - + namespace Emby.Dlna.Common { public class Argument { - public string Name { get; set; } + public string Name { get; set; } - public string Direction { get; set; } + public string Direction { get; set; } - public string RelatedStateVariable { get; set; } + public string RelatedStateVariable { get; set; } } } diff --git a/Emby.Dlna/Common/DeviceIcon.cs b/Emby.Dlna/Common/DeviceIcon.cs index 27ae92d6f0..3a91b952ec 100644 --- a/Emby.Dlna/Common/DeviceIcon.cs +++ b/Emby.Dlna/Common/DeviceIcon.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna.Common { public class DeviceIcon diff --git a/Emby.Dlna/Common/DeviceService.cs b/Emby.Dlna/Common/DeviceService.cs index 0d91dbe76d..c60d652913 100644 --- a/Emby.Dlna/Common/DeviceService.cs +++ b/Emby.Dlna/Common/DeviceService.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna.Common { public class DeviceService diff --git a/Emby.Dlna/Common/ServiceAction.cs b/Emby.Dlna/Common/ServiceAction.cs index 1bcc6a1d68..5e030d396a 100644 --- a/Emby.Dlna/Common/ServiceAction.cs +++ b/Emby.Dlna/Common/ServiceAction.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Dlna.Common { diff --git a/Emby.Dlna/Common/StateVariable.cs b/Emby.Dlna/Common/StateVariable.cs index 571e17d060..4ca84bf51c 100644 --- a/Emby.Dlna/Common/StateVariable.cs +++ b/Emby.Dlna/Common/StateVariable.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using System; namespace Emby.Dlna.Common diff --git a/Emby.Dlna/Configuration/DlnaOptions.cs b/Emby.Dlna/Configuration/DlnaOptions.cs index 6ab337752d..0ebb490a1f 100644 --- a/Emby.Dlna/Configuration/DlnaOptions.cs +++ b/Emby.Dlna/Configuration/DlnaOptions.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna.Configuration { public class DlnaOptions diff --git a/Emby.Dlna/ConfigurationExtension.cs b/Emby.Dlna/ConfigurationExtension.cs index f19f0dfb5d..82d726e018 100644 --- a/Emby.Dlna/ConfigurationExtension.cs +++ b/Emby.Dlna/ConfigurationExtension.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Common.Configuration; -using Emby.Dlna.Configuration; using System.Collections.Generic; +using Emby.Dlna.Configuration; +using MediaBrowser.Common.Configuration; namespace Emby.Dlna { diff --git a/Emby.Dlna/ConnectionManager/ConnectionManager.cs b/Emby.Dlna/ConnectionManager/ConnectionManager.cs index ab747d189b..cc427f2a15 100644 --- a/Emby.Dlna/ConnectionManager/ConnectionManager.cs +++ b/Emby.Dlna/ConnectionManager/ConnectionManager.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Common.Net; +using System.Collections.Generic; +using Emby.Dlna.Service; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; -using Emby.Dlna.Service; -using System.Collections.Generic; using MediaBrowser.Model.Xml; using Microsoft.Extensions.Logging; diff --git a/Emby.Dlna/ConnectionManager/ConnectionManagerXmlBuilder.cs b/Emby.Dlna/ConnectionManager/ConnectionManagerXmlBuilder.cs index db18025e65..f5873455a6 100644 --- a/Emby.Dlna/ConnectionManager/ConnectionManagerXmlBuilder.cs +++ b/Emby.Dlna/ConnectionManager/ConnectionManagerXmlBuilder.cs @@ -1,6 +1,6 @@ +using System.Collections.Generic; using Emby.Dlna.Common; using Emby.Dlna.Service; -using System.Collections.Generic; namespace Emby.Dlna.ConnectionManager { diff --git a/Emby.Dlna/ConnectionManager/ControlHandler.cs b/Emby.Dlna/ConnectionManager/ControlHandler.cs index 7e3e5f650a..16211c61f4 100644 --- a/Emby.Dlna/ConnectionManager/ControlHandler.cs +++ b/Emby.Dlna/ConnectionManager/ControlHandler.cs @@ -1,12 +1,11 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Configuration; -using Emby.Dlna.Server; -using Emby.Dlna.Service; -using MediaBrowser.Model.Dlna; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; +using Emby.Dlna.Service; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.ConnectionManager { diff --git a/Emby.Dlna/ConnectionManager/ServiceActionListBuilder.cs b/Emby.Dlna/ConnectionManager/ServiceActionListBuilder.cs index 674bc4c8ee..b7727b5580 100644 --- a/Emby.Dlna/ConnectionManager/ServiceActionListBuilder.cs +++ b/Emby.Dlna/ConnectionManager/ServiceActionListBuilder.cs @@ -1,5 +1,5 @@ -using Emby.Dlna.Common; using System.Collections.Generic; +using Emby.Dlna.Common; namespace Emby.Dlna.ConnectionManager { diff --git a/Emby.Dlna/ContentDirectory/ContentDirectory.cs b/Emby.Dlna/ContentDirectory/ContentDirectory.cs index 7c809a952a..cd21599d01 100644 --- a/Emby.Dlna/ContentDirectory/ContentDirectory.cs +++ b/Emby.Dlna/ContentDirectory/ContentDirectory.cs @@ -1,18 +1,18 @@ -using MediaBrowser.Common.Net; +using System; +using System.Collections.Generic; +using Emby.Dlna.Service; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using Emby.Dlna.Service; -using MediaBrowser.Model.Dlna; -using Microsoft.Extensions.Logging; -using System; -using System.Collections.Generic; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.TV; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.ContentDirectory { diff --git a/Emby.Dlna/ContentDirectory/ContentDirectoryXmlBuilder.cs b/Emby.Dlna/ContentDirectory/ContentDirectoryXmlBuilder.cs index 2695a54332..15fdb36c4c 100644 --- a/Emby.Dlna/ContentDirectory/ContentDirectoryXmlBuilder.cs +++ b/Emby.Dlna/ContentDirectory/ContentDirectoryXmlBuilder.cs @@ -1,6 +1,6 @@ +using System.Collections.Generic; using Emby.Dlna.Common; using Emby.Dlna.Service; -using System.Collections.Generic; namespace Emby.Dlna.ContentDirectory { diff --git a/Emby.Dlna/ContentDirectory/ControlHandler.cs b/Emby.Dlna/ContentDirectory/ControlHandler.cs index 57d4078a58..2f6a0ecee9 100644 --- a/Emby.Dlna/ContentDirectory/ControlHandler.cs +++ b/Emby.Dlna/ContentDirectory/ControlHandler.cs @@ -1,19 +1,3 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; -using Emby.Dlna.Didl; -using Emby.Dlna.Server; -using Emby.Dlna.Service; -using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Querying; using System; using System.Collections.Generic; using System.Globalization; @@ -21,17 +5,28 @@ using System.IO; using System.Linq; using System.Text; using System.Threading; -using System.Threading.Tasks; using System.Xml; +using Emby.Dlna.Didl; +using Emby.Dlna.Service; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.TV; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Xml; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.LiveTv; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.ContentDirectory { @@ -197,9 +192,7 @@ namespace Emby.Dlna.ContentDirectory public string GetValueOrDefault(IDictionary sparams, string key, string defaultValue) { - string val; - - if (sparams.TryGetValue(key, out val)) + if (sparams.TryGetValue(key, out string val)) { return val; } @@ -221,14 +214,12 @@ namespace Emby.Dlna.ContentDirectory int? requestedCount = null; int? start = 0; - int requestedVal; - if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out requestedVal) && requestedVal > 0) + if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out var requestedVal) && requestedVal > 0) { requestedCount = requestedVal; } - int startVal; - if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out startVal) && startVal > 0) + if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out var startVal) && startVal > 0) { start = startVal; } @@ -247,7 +238,7 @@ namespace Emby.Dlna.ContentDirectory var dlnaOptions = _config.GetDlnaConfiguration(); - using (XmlWriter writer = XmlWriter.Create(builder, settings)) + using (var writer = XmlWriter.Create(builder, settings)) { //writer.WriteStartDocument(); @@ -311,7 +302,7 @@ namespace Emby.Dlna.ContentDirectory var resXML = builder.ToString(); - return new [] + return new[] { new KeyValuePair("Result", resXML), new KeyValuePair("NumberReturned", provided.ToString(_usCulture)), @@ -339,14 +330,12 @@ namespace Emby.Dlna.ContentDirectory int? requestedCount = null; int? start = 0; - int requestedVal; - if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out requestedVal) && requestedVal > 0) + if (sparams.ContainsKey("RequestedCount") && int.TryParse(sparams["RequestedCount"], out var requestedVal) && requestedVal > 0) { requestedCount = requestedVal; } - int startVal; - if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out startVal) && startVal > 0) + if (sparams.ContainsKey("StartingIndex") && int.TryParse(sparams["StartingIndex"], out var startVal) && startVal > 0) { start = startVal; } @@ -363,7 +352,7 @@ namespace Emby.Dlna.ContentDirectory int totalCount = 0; int provided = 0; - using (XmlWriter writer = XmlWriter.Create(builder, settings)) + using (var writer = XmlWriter.Create(builder, settings)) { //writer.WriteStartDocument(); @@ -1144,7 +1133,7 @@ namespace Emby.Dlna.ContentDirectory StartIndex = query.StartIndex, UserId = query.User.Id - }, new [] { parent }, query.DtoOptions); + }, new[] { parent }, query.DtoOptions); return ToResult(result); } @@ -1298,7 +1287,6 @@ namespace Emby.Dlna.ContentDirectory private ServerItem ParseItemId(string id, User user) { - Guid itemId; StubType? stubType = null; // After using PlayTo, MediaMonkey sends a request to the server trying to get item info @@ -1324,7 +1312,7 @@ namespace Emby.Dlna.ContentDirectory } } - if (Guid.TryParse(id, out itemId)) + if (Guid.TryParse(id, out var itemId)) { var item = _libraryManager.GetItemById(itemId); diff --git a/Emby.Dlna/ContentDirectory/ServiceActionListBuilder.cs b/Emby.Dlna/ContentDirectory/ServiceActionListBuilder.cs index 7749a39af8..e999314fa6 100644 --- a/Emby.Dlna/ContentDirectory/ServiceActionListBuilder.cs +++ b/Emby.Dlna/ContentDirectory/ServiceActionListBuilder.cs @@ -1,5 +1,5 @@ -using Emby.Dlna.Common; using System.Collections.Generic; +using Emby.Dlna.Common; namespace Emby.Dlna.ContentDirectory { @@ -7,7 +7,7 @@ namespace Emby.Dlna.ContentDirectory { public IEnumerable GetActions() { - return new [] + return new[] { GetSearchCapabilitiesAction(), GetSortCapabilitiesAction(), diff --git a/Emby.Dlna/ControlRequest.cs b/Emby.Dlna/ControlRequest.cs index 2b8ce844ae..afd9a0b874 100644 --- a/Emby.Dlna/ControlRequest.cs +++ b/Emby.Dlna/ControlRequest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; namespace Emby.Dlna diff --git a/Emby.Dlna/ControlResponse.cs b/Emby.Dlna/ControlResponse.cs index 889a6940c7..d2b79fc585 100644 --- a/Emby.Dlna/ControlResponse.cs +++ b/Emby.Dlna/ControlResponse.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Dlna { @@ -15,4 +15,4 @@ namespace Emby.Dlna Headers = new Dictionary(); } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/Didl/DidlBuilder.cs b/Emby.Dlna/Didl/DidlBuilder.cs index a8217c0d41..d2f635e567 100644 --- a/Emby.Dlna/Didl/DidlBuilder.cs +++ b/Emby.Dlna/Didl/DidlBuilder.cs @@ -1,4 +1,11 @@ -using MediaBrowser.Model.Extensions; +using System; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Xml; +using Emby.Dlna.Configuration; +using Emby.Dlna.ContentDirectory; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; @@ -6,23 +13,15 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Playlists; -using Emby.Dlna.ContentDirectory; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using System; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Xml; -using MediaBrowser.Controller.MediaEncoding; -using Emby.Dlna.Configuration; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.Net; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.Didl { @@ -79,7 +78,7 @@ namespace Emby.Dlna.Didl using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8)) { - using (XmlWriter writer = XmlWriter.Create(builder, settings)) + using (var writer = XmlWriter.Create(builder, settings)) { //writer.WriteStartDocument(); diff --git a/Emby.Dlna/Didl/Filter.cs b/Emby.Dlna/Didl/Filter.cs index 2c9a1ea184..a0e67870e9 100644 --- a/Emby.Dlna/Didl/Filter.cs +++ b/Emby.Dlna/Didl/Filter.cs @@ -1,6 +1,5 @@ -using MediaBrowser.Model.Extensions; using System; -using System.Collections.Generic; +using MediaBrowser.Model.Extensions; namespace Emby.Dlna.Didl { diff --git a/Emby.Dlna/Didl/StringWriterWithEncoding.cs b/Emby.Dlna/Didl/StringWriterWithEncoding.cs index b5c565801f..c3c4bd393b 100644 --- a/Emby.Dlna/Didl/StringWriterWithEncoding.cs +++ b/Emby.Dlna/Didl/StringWriterWithEncoding.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; using System.Text; -using System.Threading.Tasks; namespace Emby.Dlna.Didl { @@ -53,9 +51,6 @@ namespace Emby.Dlna.Didl _encoding = encoding; } - public override Encoding Encoding - { - get { return (null == _encoding) ? base.Encoding : _encoding; } - } + public override Encoding Encoding => (null == _encoding) ? base.Encoding : _encoding; } } diff --git a/Emby.Dlna/DlnaManager.cs b/Emby.Dlna/DlnaManager.cs index a8777cbac5..5e99416b3f 100644 --- a/Emby.Dlna/DlnaManager.cs +++ b/Emby.Dlna/DlnaManager.cs @@ -1,24 +1,22 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Dlna; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Plugins; -using Emby.Dlna.Profiles; -using Emby.Dlna.Server; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Drawing; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; +using Emby.Dlna.Profiles; +using Emby.Dlna.Server; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Dlna; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Drawing; using MediaBrowser.Model.IO; using MediaBrowser.Model.Reflection; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Dlna { @@ -241,9 +239,7 @@ namespace Emby.Dlna return false; } - string value; - - if (headers.TryGetValue(header.Name, out value)) + if (headers.TryGetValue(header.Name, out string value)) { switch (header.Match) { @@ -263,21 +259,9 @@ namespace Emby.Dlna return false; } - private string UserProfilesPath - { - get - { - return Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "user"); - } - } + private string UserProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "user"); - private string SystemProfilesPath - { - get - { - return Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "system"); - } - } + private string SystemProfilesPath => Path.Combine(_appPaths.ConfigurationDirectoryPath, "dlna", "system"); private IEnumerable GetProfiles(string path, DeviceProfileType type) { @@ -302,8 +286,7 @@ namespace Emby.Dlna { lock (_profiles) { - Tuple profileTuple; - if (_profiles.TryGetValue(path, out profileTuple)) + if (_profiles.TryGetValue(path, out Tuple profileTuple)) { return profileTuple.Item2; } diff --git a/Emby.Dlna/Emby.Dlna.csproj b/Emby.Dlna/Emby.Dlna.csproj index f48816453b..f155bce6d3 100644 --- a/Emby.Dlna/Emby.Dlna.csproj +++ b/Emby.Dlna/Emby.Dlna.csproj @@ -1,4 +1,4 @@ - + diff --git a/Emby.Dlna/EventSubscriptionResponse.cs b/Emby.Dlna/EventSubscriptionResponse.cs index 1c405e601d..6dc1aacf4f 100644 --- a/Emby.Dlna/EventSubscriptionResponse.cs +++ b/Emby.Dlna/EventSubscriptionResponse.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Dlna { diff --git a/Emby.Dlna/Eventing/EventManager.cs b/Emby.Dlna/Eventing/EventManager.cs index ea9ba3f22c..b4ff3ec1d5 100644 --- a/Emby.Dlna/Eventing/EventManager.cs +++ b/Emby.Dlna/Eventing/EventManager.cs @@ -1,7 +1,3 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Dlna; -using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -9,6 +5,9 @@ using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.Eventing { @@ -83,9 +82,7 @@ namespace Emby.Dlna.Eventing // Starts with SECOND- header = header.Split('-').Last(); - int val; - - if (int.TryParse(header, NumberStyles.Integer, _usCulture, out val)) + if (int.TryParse(header, NumberStyles.Integer, _usCulture, out var val)) { return val; } @@ -98,8 +95,7 @@ namespace Emby.Dlna.Eventing { _logger.LogDebug("Cancelling event subscription {0}", subscriptionId); - EventSubscription sub; - _subscriptions.TryRemove(subscriptionId, out sub); + _subscriptions.TryRemove(subscriptionId, out EventSubscription sub); return new EventSubscriptionResponse { @@ -130,9 +126,7 @@ namespace Emby.Dlna.Eventing private EventSubscription GetSubscription(string id, bool throwOnMissing) { - EventSubscription e; - - if (!_subscriptions.TryGetValue(id, out e) && throwOnMissing) + if (!_subscriptions.TryGetValue(id, out EventSubscription e) && throwOnMissing) { throw new ResourceNotFoundException("Event with Id " + id + " not found."); } diff --git a/Emby.Dlna/Eventing/EventSubscription.cs b/Emby.Dlna/Eventing/EventSubscription.cs index adb042d6c4..eb8781e0cd 100644 --- a/Emby.Dlna/Eventing/EventSubscription.cs +++ b/Emby.Dlna/Eventing/EventSubscription.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.Eventing { @@ -23,12 +23,6 @@ namespace Emby.Dlna.Eventing TriggerCount++; } - public bool IsExpired - { - get - { - return SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow; - } - } + public bool IsExpired => SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow; } } diff --git a/Emby.Dlna/IConnectionManager.cs b/Emby.Dlna/IConnectionManager.cs index 5f889a34ca..855c4454d9 100644 --- a/Emby.Dlna/IConnectionManager.cs +++ b/Emby.Dlna/IConnectionManager.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna { public interface IConnectionManager : IEventManager, IUpnpService diff --git a/Emby.Dlna/IContentDirectory.cs b/Emby.Dlna/IContentDirectory.cs index d63af4ef21..b54a17c009 100644 --- a/Emby.Dlna/IContentDirectory.cs +++ b/Emby.Dlna/IContentDirectory.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna { public interface IContentDirectory : IEventManager, IUpnpService diff --git a/Emby.Dlna/IEventManager.cs b/Emby.Dlna/IEventManager.cs index e90476fe32..4f67a1b9b6 100644 --- a/Emby.Dlna/IEventManager.cs +++ b/Emby.Dlna/IEventManager.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna { public interface IEventManager diff --git a/Emby.Dlna/IMediaReceiverRegistrar.cs b/Emby.Dlna/IMediaReceiverRegistrar.cs index cb43221e56..5dde01f58b 100644 --- a/Emby.Dlna/IMediaReceiverRegistrar.cs +++ b/Emby.Dlna/IMediaReceiverRegistrar.cs @@ -1,4 +1,4 @@ - + namespace Emby.Dlna { public interface IMediaReceiverRegistrar : IEventManager, IUpnpService diff --git a/Emby.Dlna/IUpnpService.cs b/Emby.Dlna/IUpnpService.cs index 0a52e9acfc..ab8aa46192 100644 --- a/Emby.Dlna/IUpnpService.cs +++ b/Emby.Dlna/IUpnpService.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Dlna { diff --git a/Emby.Dlna/Main/DlnaEntryPoint.cs b/Emby.Dlna/Main/DlnaEntryPoint.cs index eae3f22de4..1ab6014eb0 100644 --- a/Emby.Dlna/Main/DlnaEntryPoint.cs +++ b/Emby.Dlna/Main/DlnaEntryPoint.cs @@ -1,4 +1,10 @@ -using MediaBrowser.Common.Configuration; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Emby.Dlna.PlayTo; +using Emby.Dlna.Ssdp; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller; @@ -6,25 +12,19 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.TV; -using Emby.Dlna.PlayTo; -using Emby.Dlna.Ssdp; -using Microsoft.Extensions.Logging; -using System; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Net; using MediaBrowser.Model.System; using MediaBrowser.Model.Threading; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; using Rssdp; using Rssdp.Infrastructure; -using System.Threading; namespace Emby.Dlna.Main { @@ -282,7 +282,7 @@ namespace Emby.Dlna.Main SetProperies(device, fullService); _Publisher.AddDevice(device); - var embeddedDevices = new [] + var embeddedDevices = new[] { "urn:schemas-upnp-org:service:ContentDirectory:1", "urn:schemas-upnp-org:service:ConnectionManager:1", @@ -308,8 +308,7 @@ namespace Emby.Dlna.Main private string CreateUuid(string text) { - Guid guid; - if (!Guid.TryParse(text, out guid)) + if (!Guid.TryParse(text, out var guid)) { guid = text.GetMD5(); } diff --git a/Emby.Dlna/MediaReceiverRegistrar/ControlHandler.cs b/Emby.Dlna/MediaReceiverRegistrar/ControlHandler.cs index 5ffa30f685..6257892b19 100644 --- a/Emby.Dlna/MediaReceiverRegistrar/ControlHandler.cs +++ b/Emby.Dlna/MediaReceiverRegistrar/ControlHandler.cs @@ -1,11 +1,10 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Configuration; -using Emby.Dlna.Server; -using Emby.Dlna.Service; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; +using Emby.Dlna.Service; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.MediaReceiverRegistrar { diff --git a/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrar.cs b/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrar.cs index f07af0464a..2b84528eab 100644 --- a/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrar.cs +++ b/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrar.cs @@ -1,11 +1,9 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Dlna; -using Emby.Dlna.Service; -using Microsoft.Extensions.Logging; -using System; using System.Collections.Generic; +using Emby.Dlna.Service; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.MediaReceiverRegistrar { diff --git a/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrarXmlBuilder.cs b/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrarXmlBuilder.cs index efddbc6705..6413411851 100644 --- a/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrarXmlBuilder.cs +++ b/Emby.Dlna/MediaReceiverRegistrar/MediaReceiverRegistrarXmlBuilder.cs @@ -1,6 +1,6 @@ +using System.Collections.Generic; using Emby.Dlna.Common; using Emby.Dlna.Service; -using System.Collections.Generic; namespace Emby.Dlna.MediaReceiverRegistrar { diff --git a/Emby.Dlna/MediaReceiverRegistrar/ServiceActionListBuilder.cs b/Emby.Dlna/MediaReceiverRegistrar/ServiceActionListBuilder.cs index a1f3284111..86429f6051 100644 --- a/Emby.Dlna/MediaReceiverRegistrar/ServiceActionListBuilder.cs +++ b/Emby.Dlna/MediaReceiverRegistrar/ServiceActionListBuilder.cs @@ -1,5 +1,5 @@ -using Emby.Dlna.Common; using System.Collections.Generic; +using Emby.Dlna.Common; namespace Emby.Dlna.MediaReceiverRegistrar { @@ -7,7 +7,7 @@ namespace Emby.Dlna.MediaReceiverRegistrar { public IEnumerable GetActions() { - return new [] + return new[] { GetIsValidated(), GetIsAuthorized(), diff --git a/Emby.Dlna/PlayTo/CurrentIdEventArgs.cs b/Emby.Dlna/PlayTo/CurrentIdEventArgs.cs index 99aa50bd91..fdf435bcf3 100644 --- a/Emby.Dlna/PlayTo/CurrentIdEventArgs.cs +++ b/Emby.Dlna/PlayTo/CurrentIdEventArgs.cs @@ -1,9 +1,9 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { public class CurrentIdEventArgs : EventArgs { - public string Id { get; set; } + public string Id { get; set; } } } diff --git a/Emby.Dlna/PlayTo/Device.cs b/Emby.Dlna/PlayTo/Device.cs index cf53bb861e..68aa0a6a71 100644 --- a/Emby.Dlna/PlayTo/Device.cs +++ b/Emby.Dlna/PlayTo/Device.cs @@ -1,21 +1,17 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Configuration; -using Emby.Dlna.Common; -using Emby.Dlna.Ssdp; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Net; -using System.Security; using System.Threading; using System.Threading.Tasks; using System.Xml.Linq; +using Emby.Dlna.Common; using Emby.Dlna.Server; +using Emby.Dlna.Ssdp; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Extensions; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.PlayTo { @@ -39,10 +35,7 @@ namespace Emby.Dlna.PlayTo RefreshVolumeIfNeeded(); return _volume; } - set - { - _volume = value; - } + set => _volume = value; } public TimeSpan? Duration { get; set; } @@ -50,41 +43,17 @@ namespace Emby.Dlna.PlayTo private TimeSpan _position = TimeSpan.FromSeconds(0); public TimeSpan Position { - get - { - return _position; - } - set - { - _position = value; - } + get => _position; + set => _position = value; } public TRANSPORTSTATE TransportState { get; private set; } - public bool IsPlaying - { - get - { - return TransportState == TRANSPORTSTATE.PLAYING; - } - } + public bool IsPlaying => TransportState == TRANSPORTSTATE.PLAYING; - public bool IsPaused - { - get - { - return TransportState == TRANSPORTSTATE.PAUSED || TransportState == TRANSPORTSTATE.PAUSED_PLAYBACK; - } - } + public bool IsPaused => TransportState == TRANSPORTSTATE.PAUSED || TransportState == TRANSPORTSTATE.PAUSED_PLAYBACK; - public bool IsStopped - { - get - { - return TransportState == TRANSPORTSTATE.STOPPED; - } - } + public bool IsStopped => TransportState == TRANSPORTSTATE.STOPPED; #endregion @@ -620,9 +589,7 @@ namespace Emby.Dlna.PlayTo if (transportStateValue != null) { - TRANSPORTSTATE state; - - if (Enum.TryParse(transportStateValue, true, out state)) + if (Enum.TryParse(transportStateValue, true, out TRANSPORTSTATE state)) { return state; } diff --git a/Emby.Dlna/PlayTo/DeviceInfo.cs b/Emby.Dlna/PlayTo/DeviceInfo.cs index d453a3d829..9e7c04bdb3 100644 --- a/Emby.Dlna/PlayTo/DeviceInfo.cs +++ b/Emby.Dlna/PlayTo/DeviceInfo.cs @@ -1,6 +1,6 @@ -using Emby.Dlna.Common; -using MediaBrowser.Model.Dlna; using System.Collections.Generic; +using Emby.Dlna.Common; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.PlayTo { @@ -34,26 +34,14 @@ namespace Emby.Dlna.PlayTo private string _baseUrl = string.Empty; public string BaseUrl { - get - { - return _baseUrl; - } - set - { - _baseUrl = value; - } + get => _baseUrl; + set => _baseUrl = value; } public DeviceIcon Icon { get; set; } private readonly List _services = new List(); - public List Services - { - get - { - return _services; - } - } + public List Services => _services; public DeviceIdentification ToDeviceIdentification() { diff --git a/Emby.Dlna/PlayTo/PlayToController.cs b/Emby.Dlna/PlayTo/PlayToController.cs index c7e45b8964..409b8442cd 100644 --- a/Emby.Dlna/PlayTo/PlayToController.cs +++ b/Emby.Dlna/PlayTo/PlayToController.cs @@ -1,28 +1,25 @@ -using MediaBrowser.Controller.Dlna; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Session; -using Emby.Dlna.Didl; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Session; -using MediaBrowser.Model.System; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Emby.Dlna.Didl; using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Dlna; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Extensions; -using System.Net.Http; using MediaBrowser.Model.Services; +using MediaBrowser.Model.Session; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.PlayTo { @@ -47,18 +44,9 @@ namespace Emby.Dlna.PlayTo private readonly string _accessToken; private readonly DateTime _creationTime; - public bool IsSessionActive - { - get - { - return !_disposed && _device != null; - } - } + public bool IsSessionActive => !_disposed && _device != null; - public bool SupportsMediaControl - { - get { return IsSessionActive; } - } + public bool SupportsMediaControl => IsSessionActive; public PlayToController(SessionInfo session, ISessionManager sessionManager, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, string serverAddress, string accessToken, IDeviceDiscovery deviceDiscovery, IUserDataManager userDataManager, ILocalizationManager localization, IMediaSourceManager mediaSourceManager, IConfigurationManager config, IMediaEncoder mediaEncoder) { @@ -110,14 +98,11 @@ namespace Emby.Dlna.PlayTo { var info = e.Argument; - string nts; - info.Headers.TryGetValue("NTS", out nts); + info.Headers.TryGetValue("NTS", out string nts); - string usn; - if (!info.Headers.TryGetValue("USN", out usn)) usn = string.Empty; + if (!info.Headers.TryGetValue("USN", out string usn)) usn = string.Empty; - string nt; - if (!info.Headers.TryGetValue("NT", out nt)) nt = string.Empty; + if (!info.Headers.TryGetValue("NT", out string nt)) nt = string.Empty; if (usn.IndexOf(_device.Properties.UUID, StringComparison.OrdinalIgnoreCase) != -1 && !_disposed) @@ -439,13 +424,7 @@ namespace Emby.Dlna.PlayTo private int _currentPlaylistIndex; private readonly List _playlist = new List(); - private List Playlist - { - get - { - return _playlist; - } - } + private List Playlist => _playlist; private void AddItemFromId(Guid id, List list) { @@ -641,9 +620,7 @@ namespace Emby.Dlna.PlayTo private Task SendGeneralCommand(GeneralCommand command, CancellationToken cancellationToken) { - GeneralCommandType commandType; - - if (Enum.TryParse(command.Name, true, out commandType)) + if (Enum.TryParse(command.Name, true, out GeneralCommandType commandType)) { switch (commandType) { @@ -659,13 +636,9 @@ namespace Emby.Dlna.PlayTo return _device.ToggleMute(cancellationToken); case GeneralCommandType.SetAudioStreamIndex: { - string arg; - - if (command.Arguments.TryGetValue("Index", out arg)) + if (command.Arguments.TryGetValue("Index", out string arg)) { - int val; - - if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out val)) + if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var val)) { return SetAudioStreamIndex(val); } @@ -677,13 +650,9 @@ namespace Emby.Dlna.PlayTo } case GeneralCommandType.SetSubtitleStreamIndex: { - string arg; - - if (command.Arguments.TryGetValue("Index", out arg)) + if (command.Arguments.TryGetValue("Index", out string arg)) { - int val; - - if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out val)) + if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var val)) { return SetSubtitleStreamIndex(val); } @@ -695,13 +664,9 @@ namespace Emby.Dlna.PlayTo } case GeneralCommandType.SetVolume: { - string arg; - - if (command.Arguments.TryGetValue("Volume", out arg)) + if (command.Arguments.TryGetValue("Volume", out string arg)) { - int volume; - - if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out volume)) + if (int.TryParse(arg, NumberStyles.Integer, _usCulture, out var volume)) { return _device.SetVolume(volume, cancellationToken); } @@ -896,8 +861,7 @@ namespace Emby.Dlna.PlayTo { var value = values.Get(name); - int result; - if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out result)) + if (int.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result)) { return result; } @@ -909,8 +873,7 @@ namespace Emby.Dlna.PlayTo { var value = values.Get(name); - long result; - if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out result)) + if (long.TryParse(value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result)) { return result; } diff --git a/Emby.Dlna/PlayTo/PlayToManager.cs b/Emby.Dlna/PlayTo/PlayToManager.cs index 47d00aad56..2836ee95d9 100644 --- a/Emby.Dlna/PlayTo/PlayToManager.cs +++ b/Emby.Dlna/PlayTo/PlayToManager.cs @@ -1,26 +1,23 @@ -using MediaBrowser.Common.Net; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Session; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Session; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Threading.Tasks; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Controller.Session; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Events; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Session; using MediaBrowser.Model.Threading; -using System.Threading; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Devices; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.PlayTo { @@ -81,11 +78,9 @@ namespace Emby.Dlna.PlayTo var info = e.Argument; - string usn; - if (!info.Headers.TryGetValue("USN", out usn)) usn = string.Empty; + if (!info.Headers.TryGetValue("USN", out string usn)) usn = string.Empty; - string nt; - if (!info.Headers.TryGetValue("NT", out nt)) nt = string.Empty; + if (!info.Headers.TryGetValue("NT", out string nt)) nt = string.Empty; string location = info.Location.ToString(); @@ -158,8 +153,7 @@ namespace Emby.Dlna.PlayTo _logger.LogDebug("Attempting to create PlayToController from location {0}", location); _logger.LogDebug("Logging session activity from location {0}", location); - string uuid; - if (info.Headers.TryGetValue("USN", out uuid)) + if (info.Headers.TryGetValue("USN", out string uuid)) { uuid = GetUuid(uuid); } diff --git a/Emby.Dlna/PlayTo/PlaybackProgressEventArgs.cs b/Emby.Dlna/PlayTo/PlaybackProgressEventArgs.cs index b89f7a8645..ffa56419bb 100644 --- a/Emby.Dlna/PlayTo/PlaybackProgressEventArgs.cs +++ b/Emby.Dlna/PlayTo/PlaybackProgressEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { @@ -6,4 +6,4 @@ namespace Emby.Dlna.PlayTo { public uBaseObject MediaInfo { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/PlayTo/PlaybackStartEventArgs.cs b/Emby.Dlna/PlayTo/PlaybackStartEventArgs.cs index 17d2540a50..8cd8b47acf 100644 --- a/Emby.Dlna/PlayTo/PlaybackStartEventArgs.cs +++ b/Emby.Dlna/PlayTo/PlaybackStartEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/PlayTo/PlaybackStoppedEventArgs.cs b/Emby.Dlna/PlayTo/PlaybackStoppedEventArgs.cs index 847c33ff78..2afdc324d9 100644 --- a/Emby.Dlna/PlayTo/PlaybackStoppedEventArgs.cs +++ b/Emby.Dlna/PlayTo/PlaybackStoppedEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { @@ -12,4 +12,4 @@ namespace Emby.Dlna.PlayTo public uBaseObject OldMediaInfo { get; set; } public uBaseObject NewMediaInfo { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/PlayTo/PlaylistItem.cs b/Emby.Dlna/PlayTo/PlaylistItem.cs index b60e6a6fb6..1e62b61e93 100644 --- a/Emby.Dlna/PlayTo/PlaylistItem.cs +++ b/Emby.Dlna/PlayTo/PlaylistItem.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.PlayTo { @@ -12,4 +12,4 @@ namespace Emby.Dlna.PlayTo public DeviceProfile Profile { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/PlayTo/PlaylistItemFactory.cs b/Emby.Dlna/PlayTo/PlaylistItemFactory.cs index 1080320e0c..aceb634e33 100644 --- a/Emby.Dlna/PlayTo/PlaylistItemFactory.cs +++ b/Emby.Dlna/PlayTo/PlaylistItemFactory.cs @@ -1,10 +1,9 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Session; -using System; using System.Globalization; using System.IO; using System.Linq; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Session; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/PlayTo/SsdpHttpClient.cs b/Emby.Dlna/PlayTo/SsdpHttpClient.cs index 963577169b..1ad99fac5b 100644 --- a/Emby.Dlna/PlayTo/SsdpHttpClient.cs +++ b/Emby.Dlna/PlayTo/SsdpHttpClient.cs @@ -1,13 +1,13 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Configuration; -using Emby.Dlna.Common; using System; using System.Globalization; using System.IO; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Xml.Linq; -using System.Threading; +using Emby.Dlna.Common; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/PlayTo/TRANSPORTSTATE.cs b/Emby.Dlna/PlayTo/TRANSPORTSTATE.cs index 93d306a178..9f1690b04f 100644 --- a/Emby.Dlna/PlayTo/TRANSPORTSTATE.cs +++ b/Emby.Dlna/PlayTo/TRANSPORTSTATE.cs @@ -1,4 +1,4 @@ -namespace Emby.Dlna.PlayTo +namespace Emby.Dlna.PlayTo { public enum TRANSPORTSTATE { @@ -8,4 +8,4 @@ PAUSED_PLAYBACK, PAUSED } -} \ No newline at end of file +} diff --git a/Emby.Dlna/PlayTo/TransportCommands.cs b/Emby.Dlna/PlayTo/TransportCommands.cs index e34ce87976..b96fa43e50 100644 --- a/Emby.Dlna/PlayTo/TransportCommands.cs +++ b/Emby.Dlna/PlayTo/TransportCommands.cs @@ -1,8 +1,8 @@ -using System; -using Emby.Dlna.Common; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; +using Emby.Dlna.Common; using Emby.Dlna.Ssdp; namespace Emby.Dlna.PlayTo @@ -12,27 +12,15 @@ namespace Emby.Dlna.PlayTo private List _stateVariables = new List(); public List StateVariables { - get - { - return _stateVariables; - } - set - { - _stateVariables = value; - } + get => _stateVariables; + set => _stateVariables = value; } private List _serviceActions = new List(); public List ServiceActions { - get - { - return _serviceActions; - } - set - { - _serviceActions = value; - } + get => _serviceActions; + set => _serviceActions = value; } public static TransportCommands Create(XDocument document) diff --git a/Emby.Dlna/PlayTo/TransportStateEventArgs.cs b/Emby.Dlna/PlayTo/TransportStateEventArgs.cs index c6a96f58c1..7dcd39e107 100644 --- a/Emby.Dlna/PlayTo/TransportStateEventArgs.cs +++ b/Emby.Dlna/PlayTo/TransportStateEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/PlayTo/UpnpContainer.cs b/Emby.Dlna/PlayTo/UpnpContainer.cs index 4c07f36053..943e0347b2 100644 --- a/Emby.Dlna/PlayTo/UpnpContainer.cs +++ b/Emby.Dlna/PlayTo/UpnpContainer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Xml.Linq; using Emby.Dlna.Ssdp; diff --git a/Emby.Dlna/PlayTo/uBaseObject.cs b/Emby.Dlna/PlayTo/uBaseObject.cs index 3d80d7ed04..f29a126df7 100644 --- a/Emby.Dlna/PlayTo/uBaseObject.cs +++ b/Emby.Dlna/PlayTo/uBaseObject.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/PlayTo/uParser.cs b/Emby.Dlna/PlayTo/uParser.cs index 4d26ee6b37..3a0ffffd41 100644 --- a/Emby.Dlna/PlayTo/uParser.cs +++ b/Emby.Dlna/PlayTo/uParser.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; diff --git a/Emby.Dlna/PlayTo/uParserObject.cs b/Emby.Dlna/PlayTo/uParserObject.cs index 4e75adf1f1..87a7f69c62 100644 --- a/Emby.Dlna/PlayTo/uParserObject.cs +++ b/Emby.Dlna/PlayTo/uParserObject.cs @@ -1,4 +1,4 @@ -using System.Xml.Linq; +using System.Xml.Linq; namespace Emby.Dlna.PlayTo { @@ -6,4 +6,4 @@ namespace Emby.Dlna.PlayTo { public XElement Element { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/PlayTo/uPnpNamespaces.cs b/Emby.Dlna/PlayTo/uPnpNamespaces.cs index 81acb5e414..7132ecd15c 100644 --- a/Emby.Dlna/PlayTo/uPnpNamespaces.cs +++ b/Emby.Dlna/PlayTo/uPnpNamespaces.cs @@ -1,4 +1,4 @@ -using System.Xml.Linq; +using System.Xml.Linq; namespace Emby.Dlna.PlayTo { diff --git a/Emby.Dlna/Profiles/DefaultProfile.cs b/Emby.Dlna/Profiles/DefaultProfile.cs index 1295c2f9a8..ea50bd4a75 100644 --- a/Emby.Dlna/Profiles/DefaultProfile.cs +++ b/Emby.Dlna/Profiles/DefaultProfile.cs @@ -1,7 +1,5 @@ -using MediaBrowser.Model.Dlna; using System.Linq; -using System.Xml.Serialization; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/DenonAvrProfile.cs b/Emby.Dlna/Profiles/DenonAvrProfile.cs index b8a44396a3..a738851915 100644 --- a/Emby.Dlna/Profiles/DenonAvrProfile.cs +++ b/Emby.Dlna/Profiles/DenonAvrProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/DirectTvProfile.cs b/Emby.Dlna/Profiles/DirectTvProfile.cs index 4243c1c9df..317c0976a2 100644 --- a/Emby.Dlna/Profiles/DirectTvProfile.cs +++ b/Emby.Dlna/Profiles/DirectTvProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/DishHopperJoeyProfile.cs b/Emby.Dlna/Profiles/DishHopperJoeyProfile.cs index c1d1eede25..d501cce0d2 100644 --- a/Emby.Dlna/Profiles/DishHopperJoeyProfile.cs +++ b/Emby.Dlna/Profiles/DishHopperJoeyProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/Foobar2000Profile.cs b/Emby.Dlna/Profiles/Foobar2000Profile.cs index 69a5d05ddd..947194bce4 100644 --- a/Emby.Dlna/Profiles/Foobar2000Profile.cs +++ b/Emby.Dlna/Profiles/Foobar2000Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/LgTvProfile.cs b/Emby.Dlna/Profiles/LgTvProfile.cs index 79cf2ebfd9..145685ab12 100644 --- a/Emby.Dlna/Profiles/LgTvProfile.cs +++ b/Emby.Dlna/Profiles/LgTvProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/LinksysDMA2100Profile.cs b/Emby.Dlna/Profiles/LinksysDMA2100Profile.cs index ffb735d8db..3f0bb4263d 100644 --- a/Emby.Dlna/Profiles/LinksysDMA2100Profile.cs +++ b/Emby.Dlna/Profiles/LinksysDMA2100Profile.cs @@ -1,4 +1,3 @@ -using System.Xml.Serialization; using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles diff --git a/Emby.Dlna/Profiles/MarantzProfile.cs b/Emby.Dlna/Profiles/MarantzProfile.cs index b5b486a9c9..162e284be6 100644 --- a/Emby.Dlna/Profiles/MarantzProfile.cs +++ b/Emby.Dlna/Profiles/MarantzProfile.cs @@ -1,4 +1,3 @@ -using System.Xml.Serialization; using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles diff --git a/Emby.Dlna/Profiles/MediaMonkeyProfile.cs b/Emby.Dlna/Profiles/MediaMonkeyProfile.cs index 441933efad..53cae4e2ff 100644 --- a/Emby.Dlna/Profiles/MediaMonkeyProfile.cs +++ b/Emby.Dlna/Profiles/MediaMonkeyProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { @@ -14,9 +13,9 @@ namespace Emby.Dlna.Profiles Identification = new DeviceIdentification { - FriendlyName = @"MediaMonkey", + FriendlyName = @"MediaMonkey", - Headers = new[] + Headers = new[] { new HttpHeaderInfo { diff --git a/Emby.Dlna/Profiles/PanasonicVieraProfile.cs b/Emby.Dlna/Profiles/PanasonicVieraProfile.cs index 53d6a62bba..5f31ec484e 100644 --- a/Emby.Dlna/Profiles/PanasonicVieraProfile.cs +++ b/Emby.Dlna/Profiles/PanasonicVieraProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { @@ -218,4 +217,4 @@ namespace Emby.Dlna.Profiles }; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/Profiles/PopcornHourProfile.cs b/Emby.Dlna/Profiles/PopcornHourProfile.cs index b91089b1bd..aefe8c44f3 100644 --- a/Emby.Dlna/Profiles/PopcornHourProfile.cs +++ b/Emby.Dlna/Profiles/PopcornHourProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SamsungSmartTvProfile.cs b/Emby.Dlna/Profiles/SamsungSmartTvProfile.cs index b55146ffdf..51a1c81735 100644 --- a/Emby.Dlna/Profiles/SamsungSmartTvProfile.cs +++ b/Emby.Dlna/Profiles/SamsungSmartTvProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { @@ -363,4 +362,4 @@ namespace Emby.Dlna.Profiles }; } } -} \ No newline at end of file +} diff --git a/Emby.Dlna/Profiles/SharpSmartTvProfile.cs b/Emby.Dlna/Profiles/SharpSmartTvProfile.cs index d27a0e7824..f840cfb346 100644 --- a/Emby.Dlna/Profiles/SharpSmartTvProfile.cs +++ b/Emby.Dlna/Profiles/SharpSmartTvProfile.cs @@ -1,4 +1,3 @@ -using System.Xml.Serialization; using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles diff --git a/Emby.Dlna/Profiles/SonyBlurayPlayer2013.cs b/Emby.Dlna/Profiles/SonyBlurayPlayer2013.cs index dd2ca7a7d0..2af1d3b501 100644 --- a/Emby.Dlna/Profiles/SonyBlurayPlayer2013.cs +++ b/Emby.Dlna/Profiles/SonyBlurayPlayer2013.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBlurayPlayer2014.cs b/Emby.Dlna/Profiles/SonyBlurayPlayer2014.cs index 69a2f2b618..3de0b51922 100644 --- a/Emby.Dlna/Profiles/SonyBlurayPlayer2014.cs +++ b/Emby.Dlna/Profiles/SonyBlurayPlayer2014.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBlurayPlayer2015.cs b/Emby.Dlna/Profiles/SonyBlurayPlayer2015.cs index ef443e56ed..889484bea5 100644 --- a/Emby.Dlna/Profiles/SonyBlurayPlayer2015.cs +++ b/Emby.Dlna/Profiles/SonyBlurayPlayer2015.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBlurayPlayer2016.cs b/Emby.Dlna/Profiles/SonyBlurayPlayer2016.cs index 92e5cb086f..acb90bd01b 100644 --- a/Emby.Dlna/Profiles/SonyBlurayPlayer2016.cs +++ b/Emby.Dlna/Profiles/SonyBlurayPlayer2016.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBlurayPlayerProfile.cs b/Emby.Dlna/Profiles/SonyBlurayPlayerProfile.cs index 2bf65351e1..e1808b2052 100644 --- a/Emby.Dlna/Profiles/SonyBlurayPlayerProfile.cs +++ b/Emby.Dlna/Profiles/SonyBlurayPlayerProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBravia2010Profile.cs b/Emby.Dlna/Profiles/SonyBravia2010Profile.cs index 7b452c536c..f8e8faa76d 100644 --- a/Emby.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/Emby.Dlna/Profiles/SonyBravia2010Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBravia2011Profile.cs b/Emby.Dlna/Profiles/SonyBravia2011Profile.cs index 75fefa9a86..111f36e9b5 100644 --- a/Emby.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/Emby.Dlna/Profiles/SonyBravia2011Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBravia2012Profile.cs b/Emby.Dlna/Profiles/SonyBravia2012Profile.cs index 1d55d91f9e..d5efe42707 100644 --- a/Emby.Dlna/Profiles/SonyBravia2012Profile.cs +++ b/Emby.Dlna/Profiles/SonyBravia2012Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBravia2013Profile.cs b/Emby.Dlna/Profiles/SonyBravia2013Profile.cs index 555ce419b2..3b0228694b 100644 --- a/Emby.Dlna/Profiles/SonyBravia2013Profile.cs +++ b/Emby.Dlna/Profiles/SonyBravia2013Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyBravia2014Profile.cs b/Emby.Dlna/Profiles/SonyBravia2014Profile.cs index b6e5bbea51..e860eae346 100644 --- a/Emby.Dlna/Profiles/SonyBravia2014Profile.cs +++ b/Emby.Dlna/Profiles/SonyBravia2014Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyPs3Profile.cs b/Emby.Dlna/Profiles/SonyPs3Profile.cs index fc69d2dd34..88d0646955 100644 --- a/Emby.Dlna/Profiles/SonyPs3Profile.cs +++ b/Emby.Dlna/Profiles/SonyPs3Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/SonyPs4Profile.cs b/Emby.Dlna/Profiles/SonyPs4Profile.cs index 9b444ec243..499cf88038 100644 --- a/Emby.Dlna/Profiles/SonyPs4Profile.cs +++ b/Emby.Dlna/Profiles/SonyPs4Profile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/WdtvLiveProfile.cs b/Emby.Dlna/Profiles/WdtvLiveProfile.cs index bab5576745..bf7b1ab47e 100644 --- a/Emby.Dlna/Profiles/WdtvLiveProfile.cs +++ b/Emby.Dlna/Profiles/WdtvLiveProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { @@ -17,7 +16,7 @@ namespace Emby.Dlna.Profiles { ModelName = "WD TV", - Headers = new [] + Headers = new[] { new HttpHeaderInfo {Name = "User-Agent", Value = "alphanetworks", Match = HeaderMatchType.Substring}, new HttpHeaderInfo diff --git a/Emby.Dlna/Profiles/XboxOneProfile.cs b/Emby.Dlna/Profiles/XboxOneProfile.cs index 46740cb311..710b891e3d 100644 --- a/Emby.Dlna/Profiles/XboxOneProfile.cs +++ b/Emby.Dlna/Profiles/XboxOneProfile.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using System.Xml.Serialization; +using MediaBrowser.Model.Dlna; namespace Emby.Dlna.Profiles { diff --git a/Emby.Dlna/Profiles/Xml/Default.xml b/Emby.Dlna/Profiles/Xml/Default.xml index 9b862fec3a..daac4135a2 100644 --- a/Emby.Dlna/Profiles/Xml/Default.xml +++ b/Emby.Dlna/Profiles/Xml/Default.xml @@ -1,5 +1,6 @@ - + Generic Device Jellyfin https://github.com/jellyfin/jellyfin diff --git a/Emby.Dlna/Profiles/Xml/Denon AVR.xml b/Emby.Dlna/Profiles/Xml/Denon AVR.xml index 599726c512..c76cd9a898 100644 --- a/Emby.Dlna/Profiles/Xml/Denon AVR.xml +++ b/Emby.Dlna/Profiles/Xml/Denon AVR.xml @@ -1,5 +1,6 @@ - + Denon AVR Denon:\[AVR:.* diff --git a/Emby.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/Emby.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index e640e86bfb..f2ce68ab5d 100644 --- a/Emby.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/Emby.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -1,5 +1,6 @@ - + DirecTV HD-DVR ^DIRECTV.*$ diff --git a/Emby.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/Emby.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 615774adff..5ff4975604 100644 --- a/Emby.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/Emby.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -1,5 +1,6 @@ - + Dish Hopper-Joey Echostar Technologies LLC diff --git a/Emby.Dlna/Profiles/Xml/LG Smart TV.xml b/Emby.Dlna/Profiles/Xml/LG Smart TV.xml index 21dccf5312..a0f0e0ee8a 100644 --- a/Emby.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/Emby.Dlna/Profiles/Xml/LG Smart TV.xml @@ -1,5 +1,6 @@ - + LG Smart TV LG.* diff --git a/Emby.Dlna/Profiles/Xml/Linksys DMA2100.xml b/Emby.Dlna/Profiles/Xml/Linksys DMA2100.xml index ac081bba30..55910c77f2 100644 --- a/Emby.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/Emby.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -1,5 +1,6 @@ - + Linksys DMA2100 DMA2100us diff --git a/Emby.Dlna/Profiles/Xml/Marantz.xml b/Emby.Dlna/Profiles/Xml/Marantz.xml index 2bbdecde86..a6345ab3f3 100644 --- a/Emby.Dlna/Profiles/Xml/Marantz.xml +++ b/Emby.Dlna/Profiles/Xml/Marantz.xml @@ -1,5 +1,6 @@ - + Marantz Marantz diff --git a/Emby.Dlna/Profiles/Xml/MediaMonkey.xml b/Emby.Dlna/Profiles/Xml/MediaMonkey.xml index 955c30e854..2c2c3a1de4 100644 --- a/Emby.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/Emby.Dlna/Profiles/Xml/MediaMonkey.xml @@ -1,5 +1,6 @@ - + MediaMonkey MediaMonkey diff --git a/Emby.Dlna/Profiles/Xml/Panasonic Viera.xml b/Emby.Dlna/Profiles/Xml/Panasonic Viera.xml index 0da0e09260..934f0550d3 100644 --- a/Emby.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/Emby.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -1,5 +1,6 @@ - + Panasonic Viera VIERA diff --git a/Emby.Dlna/Profiles/Xml/Popcorn Hour.xml b/Emby.Dlna/Profiles/Xml/Popcorn Hour.xml index 775d40b74d..eab220fae9 100644 --- a/Emby.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/Emby.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -1,5 +1,6 @@ - + Popcorn Hour Jellyfin https://github.com/jellyfin/jellyfin @@ -88,4 +89,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Samsung Smart TV.xml b/Emby.Dlna/Profiles/Xml/Samsung Smart TV.xml index 1362d8c38b..3e6f56e5bb 100644 --- a/Emby.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/Emby.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -1,5 +1,6 @@ - + Samsung Smart TV samsung.com @@ -124,4 +125,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sharp Smart TV.xml b/Emby.Dlna/Profiles/Xml/Sharp Smart TV.xml index dac2fdea44..74240b8435 100644 --- a/Emby.Dlna/Profiles/Xml/Sharp Smart TV.xml +++ b/Emby.Dlna/Profiles/Xml/Sharp Smart TV.xml @@ -1,5 +1,6 @@ - + Sharp Smart TV Sharp @@ -56,4 +57,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index 0cb0c52c23..2c5614883c 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -1,5 +1,6 @@ - + Sony Blu-ray Player 2013 BDP-2013 @@ -83,4 +84,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2014.xml b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2014.xml index 602c54f618..44f9821b3d 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2014.xml +++ b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2014.xml @@ -1,5 +1,6 @@ - + Sony Blu-ray Player 2014 BDP-2014 @@ -83,4 +84,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2015.xml b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2015.xml index 701aba85ff..a7d17c1a07 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2015.xml +++ b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2015.xml @@ -1,5 +1,6 @@ - + Sony Blu-ray Player 2015 BDP-2015 @@ -81,4 +82,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2016.xml b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2016.xml index 5f90126782..b42b1e84fd 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2016.xml +++ b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player 2016.xml @@ -1,5 +1,6 @@ - + Sony Blu-ray Player 2016 BDP-2016 @@ -81,4 +82,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index 765d5d5fe5..46857caf09 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/Emby.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -1,5 +1,6 @@ - + Sony Blu-ray Player Blu-ray Disc Player @@ -111,4 +112,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/Emby.Dlna/Profiles/Xml/Sony Bravia (2010).xml index d845317581..f20e9fcb6f 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/Emby.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -1,5 +1,6 @@ - + Sony Bravia (2010) KDL-\d{2}[EHLNPB]X\d[01]\d.* @@ -129,4 +130,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/Emby.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 8e376fbf9a..49819ccfdb 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/Emby.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -1,5 +1,6 @@ - + Sony Bravia (2011) KDL-\d{2}([A-Z]X\d2\d|CX400).* @@ -135,4 +136,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/Emby.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 92a04dc7a5..aaad7b342c 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/Emby.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -1,5 +1,6 @@ - + Sony Bravia (2012) KDL-\d{2}[A-Z]X\d5(\d|G).* @@ -111,4 +112,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/Emby.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 953ac0a43a..8e2e8dbaa4 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/Emby.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -1,5 +1,6 @@ - + Sony Bravia (2013) KDL-\d{2}[WR][5689]\d{2}A.* @@ -110,4 +111,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony Bravia (2014).xml b/Emby.Dlna/Profiles/Xml/Sony Bravia (2014).xml index 34afe7e6e1..17a6135e1f 100644 --- a/Emby.Dlna/Profiles/Xml/Sony Bravia (2014).xml +++ b/Emby.Dlna/Profiles/Xml/Sony Bravia (2014).xml @@ -1,5 +1,6 @@ - + Sony Bravia (2014) (KDL-\d{2}W[5-9]\d{2}B|KDL-\d{2}R480|XBR-\d{2}X[89]\d{2}B|KD-\d{2}[SX][89]\d{3}B).* @@ -110,4 +111,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/Emby.Dlna/Profiles/Xml/Sony PlayStation 3.xml index d1afc162ca..df385135cd 100644 --- a/Emby.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/Emby.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -1,5 +1,6 @@ - + Sony PlayStation 3 PLAYSTATION 3 @@ -101,4 +102,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Sony PlayStation 4.xml b/Emby.Dlna/Profiles/Xml/Sony PlayStation 4.xml index 090abe4175..20f50f6b63 100644 --- a/Emby.Dlna/Profiles/Xml/Sony PlayStation 4.xml +++ b/Emby.Dlna/Profiles/Xml/Sony PlayStation 4.xml @@ -1,5 +1,6 @@ - + Sony PlayStation 4 PLAYSTATION 4 @@ -104,4 +105,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/WDTV Live.xml b/Emby.Dlna/Profiles/Xml/WDTV Live.xml index db4ce4722b..05380e33a6 100644 --- a/Emby.Dlna/Profiles/Xml/WDTV Live.xml +++ b/Emby.Dlna/Profiles/Xml/WDTV Live.xml @@ -1,5 +1,6 @@ - + WDTV Live WD TV @@ -90,4 +91,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/Xbox One.xml b/Emby.Dlna/Profiles/Xml/Xbox One.xml index 40e05f7fca..5f5cf1af31 100644 --- a/Emby.Dlna/Profiles/Xml/Xbox One.xml +++ b/Emby.Dlna/Profiles/Xml/Xbox One.xml @@ -1,5 +1,6 @@ - + Xbox One Xbox One @@ -122,4 +123,4 @@ - \ No newline at end of file + diff --git a/Emby.Dlna/Profiles/Xml/foobar2000.xml b/Emby.Dlna/Profiles/Xml/foobar2000.xml index 19dc10e83a..f3eedb35c6 100644 --- a/Emby.Dlna/Profiles/Xml/foobar2000.xml +++ b/Emby.Dlna/Profiles/Xml/foobar2000.xml @@ -1,5 +1,6 @@ - + foobar2000 foobar diff --git a/Emby.Dlna/Properties/AssemblyInfo.cs b/Emby.Dlna/Properties/AssemblyInfo.cs index fd3b433699..9d3a22c970 100644 --- a/Emby.Dlna/Properties/AssemblyInfo.cs +++ b/Emby.Dlna/Properties/AssemblyInfo.cs @@ -1,6 +1,5 @@ -using System.Resources; using System.Reflection; -using System.Runtime.InteropServices; +using System.Resources; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information diff --git a/Emby.Dlna/Server/DescriptionXmlBuilder.cs b/Emby.Dlna/Server/DescriptionXmlBuilder.cs index bd57f4c43f..e0ecbee43f 100644 --- a/Emby.Dlna/Server/DescriptionXmlBuilder.cs +++ b/Emby.Dlna/Server/DescriptionXmlBuilder.cs @@ -1,12 +1,11 @@ -using Emby.Dlna.Common; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Extensions; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Security; using System.Text; +using Emby.Dlna.Common; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Extensions; namespace Emby.Dlna.Server { diff --git a/Emby.Dlna/Service/BaseControlHandler.cs b/Emby.Dlna/Service/BaseControlHandler.cs index ae094cc2f6..5f78674b88 100644 --- a/Emby.Dlna/Service/BaseControlHandler.cs +++ b/Emby.Dlna/Service/BaseControlHandler.cs @@ -1,7 +1,3 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Dlna; -using Emby.Dlna.Server; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; @@ -9,9 +5,10 @@ using System.Linq; using System.Text; using System.Xml; using Emby.Dlna.Didl; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Extensions; using MediaBrowser.Model.Xml; -using MediaBrowser.Model.Extensions; +using Microsoft.Extensions.Logging; namespace Emby.Dlna.Service { @@ -88,7 +85,7 @@ namespace Emby.Dlna.Service StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8); - using (XmlWriter writer = XmlWriter.Create(builder, settings)) + using (var writer = XmlWriter.Create(builder, settings)) { writer.WriteStartDocument(true); @@ -205,7 +202,7 @@ namespace Emby.Dlna.Service return result; } - private void ParseFirstBodyChild(XmlReader reader, IDictionary headers) + private void ParseFirstBodyChild(XmlReader reader, IDictionary headers) { reader.MoveToContent(); reader.Read(); @@ -229,7 +226,7 @@ namespace Emby.Dlna.Service { public string LocalName; public string NamespaceURI; - public IDictionary Headers = new Dictionary(StringComparer.OrdinalIgnoreCase); + public IDictionary Headers = new Dictionary(StringComparer.OrdinalIgnoreCase); } protected abstract IEnumerable> GetResult(string methodName, IDictionary methodParams); diff --git a/Emby.Dlna/Service/BaseService.cs b/Emby.Dlna/Service/BaseService.cs index 10ef12c6c2..5359e94c44 100644 --- a/Emby.Dlna/Service/BaseService.cs +++ b/Emby.Dlna/Service/BaseService.cs @@ -1,6 +1,5 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Dlna; using Emby.Dlna.Eventing; +using MediaBrowser.Common.Net; using Microsoft.Extensions.Logging; namespace Emby.Dlna.Service diff --git a/Emby.Dlna/Service/ControlErrorHandler.cs b/Emby.Dlna/Service/ControlErrorHandler.cs index 431dea9320..d5eb4a8879 100644 --- a/Emby.Dlna/Service/ControlErrorHandler.cs +++ b/Emby.Dlna/Service/ControlErrorHandler.cs @@ -1,4 +1,3 @@ -using MediaBrowser.Controller.Dlna; using System; using System.IO; using System.Text; @@ -21,7 +20,7 @@ namespace Emby.Dlna.Service StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8); - using (XmlWriter writer = XmlWriter.Create(builder, settings)) + using (var writer = XmlWriter.Create(builder, settings)) { writer.WriteStartDocument(true); diff --git a/Emby.Dlna/Service/ServiceXmlBuilder.cs b/Emby.Dlna/Service/ServiceXmlBuilder.cs index 68782ffb76..bd1f0bf05c 100644 --- a/Emby.Dlna/Service/ServiceXmlBuilder.cs +++ b/Emby.Dlna/Service/ServiceXmlBuilder.cs @@ -1,7 +1,6 @@ -using Emby.Dlna.Common; using System.Collections.Generic; -using System.Security; using System.Text; +using Emby.Dlna.Common; using Emby.Dlna.Server; namespace Emby.Dlna.Service diff --git a/Emby.Dlna/Ssdp/DeviceDiscovery.cs b/Emby.Dlna/Ssdp/DeviceDiscovery.cs index e01ff81497..069d704b88 100644 --- a/Emby.Dlna/Ssdp/DeviceDiscovery.cs +++ b/Emby.Dlna/Ssdp/DeviceDiscovery.cs @@ -1,19 +1,12 @@ -using MediaBrowser.Common.Events; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Dlna; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; -using System.Net; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Events; using MediaBrowser.Model.Net; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; using Rssdp; using Rssdp.Infrastructure; diff --git a/Emby.Dlna/Ssdp/Extensions.cs b/Emby.Dlna/Ssdp/Extensions.cs index 41a361515b..c680c123ed 100644 --- a/Emby.Dlna/Ssdp/Extensions.cs +++ b/Emby.Dlna/Ssdp/Extensions.cs @@ -1,6 +1,3 @@ -using System; -using System.Net; -using System.Threading.Tasks; using System.Xml.Linq; namespace Emby.Dlna.Ssdp diff --git a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj index 7d6643d54f..1eb5377411 100644 --- a/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj +++ b/Emby.Drawing.Skia/Emby.Drawing.Skia.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/Emby.Drawing.Skia/PercentPlayedDrawer.cs b/Emby.Drawing.Skia/PercentPlayedDrawer.cs index e291a462b9..a204999fe3 100644 --- a/Emby.Drawing.Skia/PercentPlayedDrawer.cs +++ b/Emby.Drawing.Skia/PercentPlayedDrawer.cs @@ -1,6 +1,6 @@ -using SkiaSharp; -using MediaBrowser.Model.Drawing; using System; +using MediaBrowser.Model.Drawing; +using SkiaSharp; namespace Emby.Drawing.Skia { diff --git a/Emby.Drawing.Skia/PlayedIndicatorDrawer.cs b/Emby.Drawing.Skia/PlayedIndicatorDrawer.cs index a4d8a29383..7e9cb8c5cb 100644 --- a/Emby.Drawing.Skia/PlayedIndicatorDrawer.cs +++ b/Emby.Drawing.Skia/PlayedIndicatorDrawer.cs @@ -1,8 +1,8 @@ -using SkiaSharp; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.IO; +using SkiaSharp; namespace Emby.Drawing.Skia { @@ -51,7 +51,7 @@ namespace Emby.Drawing.Skia paint.Typeface = emojiTypeface; - canvas.DrawText(text, (float)x-20, OffsetFromTopRightCorner + 12, paint); + canvas.DrawText(text, (float)x - 20, OffsetFromTopRightCorner + 12, paint); } } } diff --git a/Emby.Drawing.Skia/SkiaEncoder.cs b/Emby.Drawing.Skia/SkiaEncoder.cs index dc5ae77ccc..8f517681e8 100644 --- a/Emby.Drawing.Skia/SkiaEncoder.cs +++ b/Emby.Drawing.Skia/SkiaEncoder.cs @@ -1,18 +1,17 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; -using SkiaSharp; using System; +using System.Globalization; using System.IO; using System.Linq; using System.Reflection; -using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Extensions; -using System.Globalization; +using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; +using SkiaSharp; namespace Emby.Drawing.Skia { @@ -35,46 +34,34 @@ namespace Emby.Drawing.Skia LogVersion(); } - public string[] SupportedInputFormats - { - get + public string[] SupportedInputFormats => + new[] { - // Some common file name extensions for RAW picture files include: .cr2, .crw, .dng, .nef, .orf, .rw2, .pef, .arw, .sr2, .srf, and .tif. - return new[] - { - "jpeg", - "jpg", - "png", - - "dng", - - "webp", - "gif", - "bmp", - "ico", - "astc", - "ktx", - "pkm", - "wbmp", - - // TODO - // Are all of these supported? https://github.com/google/skia/blob/master/infra/bots/recipes/test.py#L454 - - // working on windows at least - "cr2", - "nef", - "arw" - }; - } - } + "jpeg", + "jpg", + "png", - public ImageFormat[] SupportedOutputFormats - { - get - { - return new[] { ImageFormat.Webp, ImageFormat.Jpg, ImageFormat.Png }; - } - } + "dng", + + "webp", + "gif", + "bmp", + "ico", + "astc", + "ktx", + "pkm", + "wbmp", + + // TODO + // Are all of these supported? https://github.com/google/skia/blob/master/infra/bots/recipes/test.py#L454 + + // working on windows at least + "cr2", + "nef", + "arw" + }; + + public ImageFormat[] SupportedOutputFormats => new[] { ImageFormat.Webp, ImageFormat.Jpg, ImageFormat.Png }; private void LogVersion() { @@ -667,19 +654,10 @@ namespace Emby.Drawing.Skia } } - public string Name - { - get { return "Skia"; } - } + public string Name => "Skia"; - public bool SupportsImageCollageCreation - { - get { return true; } - } + public bool SupportsImageCollageCreation => true; - public bool SupportsImageEncoding - { - get { return true; } - } + public bool SupportsImageEncoding => true; } } diff --git a/Emby.Drawing.Skia/StripCollageBuilder.cs b/Emby.Drawing.Skia/StripCollageBuilder.cs index b3e7dbb5fa..8d984de116 100644 --- a/Emby.Drawing.Skia/StripCollageBuilder.cs +++ b/Emby.Drawing.Skia/StripCollageBuilder.cs @@ -1,9 +1,9 @@ -using SkiaSharp; -using MediaBrowser.Common.Configuration; using System; +using System.Collections.Generic; using System.IO; +using MediaBrowser.Common.Configuration; using MediaBrowser.Model.IO; -using System.Collections.Generic; +using SkiaSharp; namespace Emby.Drawing.Skia { @@ -164,7 +164,7 @@ namespace Emby.Drawing.Skia private SKBitmap GetNextValidImage(string[] paths, int currentIndex, out int newIndex) { - Dictionary imagesTested = new Dictionary(); + var imagesTested = new Dictionary(); SKBitmap bitmap = null; while (imagesTested.Count < paths.Length) @@ -174,7 +174,7 @@ namespace Emby.Drawing.Skia currentIndex = 0; } - bitmap = SkiaEncoder.Decode(paths[currentIndex], false, _fileSystem, null, out SKEncodedOrigin origin); + bitmap = SkiaEncoder.Decode(paths[currentIndex], false, _fileSystem, null, out var origin); imagesTested[currentIndex] = 0; diff --git a/Emby.Drawing.Skia/UnplayedCountIndicator.cs b/Emby.Drawing.Skia/UnplayedCountIndicator.cs index b59bc1026a..e1d1ecff83 100644 --- a/Emby.Drawing.Skia/UnplayedCountIndicator.cs +++ b/Emby.Drawing.Skia/UnplayedCountIndicator.cs @@ -1,12 +1,9 @@ -using SkiaSharp; +using System.Globalization; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; using MediaBrowser.Model.Drawing; -using System.Globalization; -using System.Threading.Tasks; - -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; +using SkiaSharp; namespace Emby.Drawing.Skia { diff --git a/Emby.Drawing/Common/ImageHeader.cs b/Emby.Drawing/Common/ImageHeader.cs index 3aa0cac257..c08cdabb2f 100644 --- a/Emby.Drawing/Common/ImageHeader.cs +++ b/Emby.Drawing/Common/ImageHeader.cs @@ -1,12 +1,10 @@ -using MediaBrowser.Model.Drawing; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; - -using MediaBrowser.Controller.IO; +using MediaBrowser.Model.Drawing; using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Drawing.Common { @@ -76,7 +74,7 @@ namespace Emby.Drawing.Common /// /// The binary reader. /// Size. - /// binaryReader + /// binaryReader /// The image was of an unrecognized format. private static ImageSize GetDimensions(BinaryReader binaryReader) { @@ -203,7 +201,7 @@ namespace Emby.Drawing.Common /// /// The binary reader. /// Size. - /// + /// private static ImageSize DecodeJfif(BinaryReader binaryReader) { // A JPEG image consists of a sequence of segments, diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index 5ffaaed276..ba29c656bf 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -1,4 +1,4 @@ - + diff --git a/Emby.Drawing/ImageProcessor.cs b/Emby.Drawing/ImageProcessor.cs index 4e4b36507a..28aae9caec 100644 --- a/Emby.Drawing/ImageProcessor.cs +++ b/Emby.Drawing/ImageProcessor.cs @@ -1,27 +1,26 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; using Emby.Drawing.Common; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Drawing; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Extensions; +using Microsoft.Extensions.Logging; namespace Emby.Drawing { @@ -75,7 +74,7 @@ namespace Emby.Drawing public IImageEncoder ImageEncoder { - get { return _imageEncoder; } + get => _imageEncoder; set { if (value == null) @@ -87,67 +86,44 @@ namespace Emby.Drawing } } - public string[] SupportedInputFormats - { - get + public string[] SupportedInputFormats => + new string[] { - return new string[] - { - "tiff", - "tif", - "jpeg", - "jpg", - "png", - "aiff", - "cr2", - "crw", - - // Remove until supported - //"nef", - "orf", - "pef", - "arw", - "webp", - "gif", - "bmp", - "erf", - "raf", - "rw2", - "nrw", - "dng", - "ico", - "astc", - "ktx", - "pkm", - "wbmp" - }; - } - } + "tiff", + "tif", + "jpeg", + "jpg", + "png", + "aiff", + "cr2", + "crw", + // Remove until supported + //"nef", + "orf", + "pef", + "arw", + "webp", + "gif", + "bmp", + "erf", + "raf", + "rw2", + "nrw", + "dng", + "ico", + "astc", + "ktx", + "pkm", + "wbmp" + }; - public bool SupportsImageCollageCreation - { - get - { - return _imageEncoder.SupportsImageCollageCreation; - } - } - private string ResizedImageCachePath - { - get - { - return Path.Combine(_appPaths.ImageCachePath, "resized-images"); - } - } + public bool SupportsImageCollageCreation => _imageEncoder.SupportsImageCollageCreation; - private string EnhancedImageCachePath - { - get - { - return Path.Combine(_appPaths.ImageCachePath, "enhanced-images"); - } - } + private string ResizedImageCachePath => Path.Combine(_appPaths.ImageCachePath, "resized-images"); + + private string EnhancedImageCachePath => Path.Combine(_appPaths.ImageCachePath, "enhanced-images"); public void AddParts(IEnumerable enhancers) { @@ -515,7 +491,7 @@ namespace Emby.Drawing /// The item. /// The image. /// Guid. - /// item + /// item public string GetImageCacheTag(BaseItem item, ItemImageInfo image) { var supportedEnhancers = GetSupportedEnhancers(item, image.Type); @@ -547,7 +523,7 @@ namespace Emby.Drawing /// The image. /// The image enhancers. /// Guid. - /// item + /// item public string GetImageCacheTag(BaseItem item, ItemImageInfo image, IImageEnhancer[] imageEnhancers) { var originalImagePath = image.Path; @@ -768,7 +744,7 @@ namespace Emby.Drawing /// Name of the unique. /// The file extension. /// System.String. - /// + /// /// path /// or /// uniqueName @@ -802,7 +778,7 @@ namespace Emby.Drawing /// The path. /// The filename. /// System.String. - /// + /// /// path /// or /// filename @@ -870,8 +846,7 @@ namespace Emby.Drawing { lock (_locks) { - LockInfo info; - if (_locks.TryGetValue(key, out info)) + if (_locks.TryGetValue(key, out LockInfo info)) { info.Count++; } diff --git a/Emby.Drawing/NullImageEncoder.cs b/Emby.Drawing/NullImageEncoder.cs index 95ea42ecf2..e6f205a1f5 100644 --- a/Emby.Drawing/NullImageEncoder.cs +++ b/Emby.Drawing/NullImageEncoder.cs @@ -1,4 +1,4 @@ -using System; +using System; using MediaBrowser.Controller.Drawing; using MediaBrowser.Model.Drawing; @@ -6,26 +6,15 @@ namespace Emby.Drawing { public class NullImageEncoder : IImageEncoder { - public string[] SupportedInputFormats - { - get + public string[] SupportedInputFormats => + new[] { - return new[] - { - "png", - "jpeg", - "jpg" - }; - } - } + "png", + "jpeg", + "jpg" + }; - public ImageFormat[] SupportedOutputFormats - { - get - { - return new[] { ImageFormat.Jpg, ImageFormat.Png }; - } - } + public ImageFormat[] SupportedOutputFormats => new[] { ImageFormat.Jpg, ImageFormat.Png }; public void CropWhiteSpace(string inputPath, string outputPath) { @@ -42,20 +31,11 @@ namespace Emby.Drawing throw new NotImplementedException(); } - public string Name - { - get { return "Null Image Encoder"; } - } + public string Name => "Null Image Encoder"; - public bool SupportsImageCollageCreation - { - get { return false; } - } + public bool SupportsImageCollageCreation => false; - public bool SupportsImageEncoding - { - get { return false; } - } + public bool SupportsImageEncoding => false; public ImageSize GetImageSize(string path) { diff --git a/Emby.IsoMounting/IsoMounter.sln b/Emby.IsoMounting/IsoMounter.sln index 7505be4f70..55db1b1aec 100644 --- a/Emby.IsoMounting/IsoMounter.sln +++ b/Emby.IsoMounting/IsoMounter.sln @@ -1,4 +1,4 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.27004.2009 diff --git a/Emby.IsoMounting/IsoMounter/Configuration/PluginConfiguration.cs b/Emby.IsoMounting/IsoMounter/Configuration/PluginConfiguration.cs index 9308b8c891..4755e4e824 100644 --- a/Emby.IsoMounting/IsoMounter/Configuration/PluginConfiguration.cs +++ b/Emby.IsoMounting/IsoMounter/Configuration/PluginConfiguration.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Model.Plugins; +using MediaBrowser.Model.Plugins; namespace IsoMounter.Configuration { public class PluginConfiguration : BasePluginConfiguration { } -} \ No newline at end of file +} diff --git a/Emby.IsoMounting/IsoMounter/IsoMounter.csproj b/Emby.IsoMounting/IsoMounter/IsoMounter.csproj index 9274f9763a..2a81f5aa0f 100644 --- a/Emby.IsoMounting/IsoMounter/IsoMounter.csproj +++ b/Emby.IsoMounting/IsoMounter/IsoMounter.csproj @@ -8,7 +8,7 @@ - + netstandard2.0 false diff --git a/Emby.IsoMounting/IsoMounter/LinuxIsoManager.cs b/Emby.IsoMounting/IsoMounter/LinuxIsoManager.cs index ab85cb721a..ac486f1675 100644 --- a/Emby.IsoMounting/IsoMounter/LinuxIsoManager.cs +++ b/Emby.IsoMounting/IsoMounter/LinuxIsoManager.cs @@ -1,19 +1,19 @@ using System; using System.IO; +using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Diagnostics; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; -using System.Runtime.InteropServices; +using Microsoft.Extensions.Logging; namespace IsoMounter { public class LinuxIsoManager : IIsoMounter { [DllImport("libc", SetLastError = true)] - public static extern uint getuid(); + static extern uint getuid(); #region Private Fields @@ -87,9 +87,12 @@ namespace IsoMounter UmountCommand ); - if (!string.IsNullOrEmpty(SudoCommand) && !string.IsNullOrEmpty(MountCommand) && !string.IsNullOrEmpty(UmountCommand)) { + if (!string.IsNullOrEmpty(SudoCommand) && !string.IsNullOrEmpty(MountCommand) && !string.IsNullOrEmpty(UmountCommand)) + { ExecutablesAvailable = true; - } else { + } + else + { ExecutablesAvailable = false; } @@ -99,21 +102,11 @@ namespace IsoMounter #region Interface Implementation for IIsoMounter - public bool IsInstalled { - get { - return true; - } - } + public bool IsInstalled => true; - public string Name { - get { return "LinuxMount"; } - } + public string Name => "LinuxMount"; - public bool RequiresInstallation { - get { - return false; - } - } + public bool RequiresInstallation => false; public bool CanMount(string path) { @@ -148,10 +141,12 @@ namespace IsoMounter public Task Mount(string isoPath, CancellationToken cancellationToken) { - if (MountISO(isoPath, out LinuxMount mountedISO)) { + if (MountISO(isoPath, out LinuxMount mountedISO)) + { return Task.FromResult(mountedISO); } - else { + else + { throw new IOException(string.Format( "An error occurred trying to mount image [$0].", isoPath @@ -180,7 +175,8 @@ namespace IsoMounter protected virtual void Dispose(bool disposing) { - if (disposed) { + if (disposed) + { return; } @@ -190,7 +186,8 @@ namespace IsoMounter disposing.ToString() ); - if (disposing) { + if (disposing) + { // // Free managed objects here. @@ -217,7 +214,8 @@ namespace IsoMounter { string path = test.Trim(); - if (!string.IsNullOrEmpty(path) && FileSystem.FileExists(path = Path.Combine(path, name))) { + if (!string.IsNullOrEmpty(path) && FileSystem.FileExists(path = Path.Combine(path, name))) + { return FileSystem.GetFullPath(path); } } @@ -247,7 +245,8 @@ namespace IsoMounter bool processFailed = false; var process = ProcessFactory.Create( - new ProcessOptions { + new ProcessOptions + { CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardError = true, @@ -285,9 +284,12 @@ namespace IsoMounter _logger.LogDebug(ex, "[{Name}] Unhandled exception executing command.", Name); } - if (!processFailed && process.ExitCode == 0) { + if (!processFailed && process.ExitCode == 0) + { return true; - } else { + } + else + { return false; } @@ -300,7 +302,8 @@ namespace IsoMounter string cmdFilename; string mountPoint = Path.Combine(MountPointRoot, Guid.NewGuid().ToString()); - if (!string.IsNullOrEmpty(isoPath)) { + if (!string.IsNullOrEmpty(isoPath)) + { _logger.LogInformation( "[{Name}] Attempting to mount [{Path}].", @@ -314,7 +317,9 @@ namespace IsoMounter mountPoint ); - } else { + } + else + { throw new ArgumentNullException(nameof(isoPath)); @@ -333,10 +338,13 @@ namespace IsoMounter throw new IOException("Unable to create mount point for " + isoPath); } - if (GetUID() == 0) { + if (GetUID() == 0) + { cmdFilename = MountCommand; cmdArguments = string.Format("\"{0}\" \"{1}\"", isoPath, mountPoint); - } else { + } + else + { cmdFilename = SudoCommand; cmdArguments = string.Format("\"{0}\" \"{1}\" \"{2}\"", MountCommand, isoPath, mountPoint); } @@ -348,7 +356,8 @@ namespace IsoMounter cmdArguments ); - if (ExecuteCommand(cmdFilename, cmdArguments)) { + if (ExecuteCommand(cmdFilename, cmdArguments)) + { _logger.LogInformation( "[{0}] ISO mount completed successfully.", @@ -357,7 +366,9 @@ namespace IsoMounter mountedISO = new LinuxMount(this, isoPath, mountPoint); - } else { + } + else + { _logger.LogInformation( "[{0}] ISO mount completed with errors.", @@ -387,7 +398,8 @@ namespace IsoMounter string cmdArguments; string cmdFilename; - if (mount != null) { + if (mount != null) + { _logger.LogInformation( "[{0}] Attempting to unmount ISO [{1}] mounted on [{2}].", @@ -396,16 +408,21 @@ namespace IsoMounter mount.MountedPath ); - } else { + } + else + { throw new ArgumentNullException(nameof(mount)); } - if (GetUID() == 0) { + if (GetUID() == 0) + { cmdFilename = UmountCommand; cmdArguments = string.Format("\"{0}\"", mount.MountedPath); - } else { + } + else + { cmdFilename = SudoCommand; cmdArguments = string.Format("\"{0}\" \"{1}\"", UmountCommand, mount.MountedPath); } @@ -417,14 +434,17 @@ namespace IsoMounter cmdArguments ); - if (ExecuteCommand(cmdFilename, cmdArguments)) { + if (ExecuteCommand(cmdFilename, cmdArguments)) + { _logger.LogInformation( "[{0}] ISO unmount completed successfully.", Name ); - } else { + } + else + { _logger.LogInformation( "[{0}] ISO unmount completed with errors.", diff --git a/Emby.IsoMounting/IsoMounter/LinuxMount.cs b/Emby.IsoMounting/IsoMounter/LinuxMount.cs index da2eb19835..b8636822b6 100644 --- a/Emby.IsoMounting/IsoMounter/LinuxMount.cs +++ b/Emby.IsoMounting/IsoMounter/LinuxMount.cs @@ -45,11 +45,13 @@ namespace IsoMounter protected virtual void Dispose(bool disposing) { - if (disposed) { + if (disposed) + { return; } - if (disposing) { + if (disposing) + { // // Free managed objects here. diff --git a/Emby.IsoMounting/IsoMounter/Plugin.cs b/Emby.IsoMounting/IsoMounter/Plugin.cs index ea53175024..f45b39d3e4 100644 --- a/Emby.IsoMounting/IsoMounter/Plugin.cs +++ b/Emby.IsoMounting/IsoMounter/Plugin.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Plugins; -using MediaBrowser.Model.Serialization; using System; using IsoMounter.Configuration; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Plugins; +using MediaBrowser.Model.Serialization; namespace IsoMounter { @@ -13,30 +13,18 @@ namespace IsoMounter } private Guid _id = new Guid("4682DD4C-A675-4F1B-8E7C-79ADF137A8F8"); - public override Guid Id - { - get { return _id; } - } + public override Guid Id => _id; /// /// Gets the name of the plugin /// /// The name. - public override string Name - { - get { return "Iso Mounter"; } - } + public override string Name => "Iso Mounter"; /// /// Gets the description. /// /// The description. - public override string Description - { - get - { - return "Mount and stream ISO contents"; - } - } + public override string Description => "Mount and stream ISO contents"; } } diff --git a/Emby.IsoMounting/IsoMounter/Properties/AssemblyInfo.cs b/Emby.IsoMounting/IsoMounter/Properties/AssemblyInfo.cs index 8a26b12a2a..d60eccc2ee 100644 --- a/Emby.IsoMounting/IsoMounter/Properties/AssemblyInfo.cs +++ b/Emby.IsoMounting/IsoMounter/Properties/AssemblyInfo.cs @@ -2,7 +2,7 @@ using System.Reflection; using System.Resources; using System.Runtime.InteropServices; -// General Information about an assembly is controlled through the following +// General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("IsoMounter")] diff --git a/Emby.Naming/Audio/AlbumParser.cs b/Emby.Naming/Audio/AlbumParser.cs index c88631a0c8..7d029a9f49 100644 --- a/Emby.Naming/Audio/AlbumParser.cs +++ b/Emby.Naming/Audio/AlbumParser.cs @@ -1,10 +1,9 @@ -using Emby.Naming.Common; -using Emby.Naming.Video; using System; using System.Globalization; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Common; namespace Emby.Naming.Audio { @@ -50,8 +49,7 @@ namespace Emby.Naming.Audio tmp = tmp.Trim().Split(' ').FirstOrDefault() ?? string.Empty; - int val; - if (int.TryParse(tmp, NumberStyles.Integer, CultureInfo.InvariantCulture, out val)) + if (int.TryParse(tmp, NumberStyles.Integer, CultureInfo.InvariantCulture, out var val)) { result.IsMultiPart = true; break; diff --git a/Emby.Naming/Audio/AudioFileParser.cs b/Emby.Naming/Audio/AudioFileParser.cs index 20016915ae..609eb779ad 100644 --- a/Emby.Naming/Audio/AudioFileParser.cs +++ b/Emby.Naming/Audio/AudioFileParser.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using Emby.Naming.Common; diff --git a/Emby.Naming/Audio/MultiPartResult.cs b/Emby.Naming/Audio/MultiPartResult.cs index fae0ae4d81..b1fa6e5639 100644 --- a/Emby.Naming/Audio/MultiPartResult.cs +++ b/Emby.Naming/Audio/MultiPartResult.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Audio { public class MultiPartResult diff --git a/Emby.Naming/AudioBook/AudioBookFileInfo.cs b/Emby.Naming/AudioBook/AudioBookFileInfo.cs index 88a98d0f1e..de66a54022 100644 --- a/Emby.Naming/AudioBook/AudioBookFileInfo.cs +++ b/Emby.Naming/AudioBook/AudioBookFileInfo.cs @@ -1,6 +1,4 @@ - using System; -using Emby.Naming.Video; namespace Emby.Naming.AudioBook { diff --git a/Emby.Naming/AudioBook/AudioBookFilePathParser.cs b/Emby.Naming/AudioBook/AudioBookFilePathParser.cs index b4805edd21..5909797947 100644 --- a/Emby.Naming/AudioBook/AudioBookFilePathParser.cs +++ b/Emby.Naming/AudioBook/AudioBookFilePathParser.cs @@ -1,12 +1,7 @@ -using System; -using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Linq; -using System.Text; using System.Text.RegularExpressions; using Emby.Naming.Common; -using Emby.Naming.TV; namespace Emby.Naming.AudioBook { @@ -21,7 +16,7 @@ namespace Emby.Naming.AudioBook public AudioBookFilePathParserResult Parse(string path, bool IsDirectory) { - AudioBookFilePathParserResult result = Parse(path); + var result = Parse(path); return !result.Success ? new AudioBookFilePathParserResult() : result; } @@ -39,8 +34,7 @@ namespace Emby.Naming.AudioBook var value = match.Groups["chapter"]; if (value.Success) { - int intValue; - if (int.TryParse(value.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out intValue)) + if (int.TryParse(value.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var intValue)) { result.ChapterNumber = intValue; } @@ -51,8 +45,7 @@ namespace Emby.Naming.AudioBook var value = match.Groups["part"]; if (value.Success) { - int intValue; - if (int.TryParse(value.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out intValue)) + if (int.TryParse(value.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var intValue)) { result.ChapterNumber = intValue; } diff --git a/Emby.Naming/AudioBook/AudioBookFilePathParserResult.cs b/Emby.Naming/AudioBook/AudioBookFilePathParserResult.cs index 759e7b8ad2..3a8e3c31f2 100644 --- a/Emby.Naming/AudioBook/AudioBookFilePathParserResult.cs +++ b/Emby.Naming/AudioBook/AudioBookFilePathParserResult.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace Emby.Naming.AudioBook { public class AudioBookFilePathParserResult diff --git a/Emby.Naming/AudioBook/AudioBookInfo.cs b/Emby.Naming/AudioBook/AudioBookInfo.cs index d7af63d915..f6e1d5be43 100644 --- a/Emby.Naming/AudioBook/AudioBookInfo.cs +++ b/Emby.Naming/AudioBook/AudioBookInfo.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using Emby.Naming.Video; +using System.Collections.Generic; namespace Emby.Naming.AudioBook { diff --git a/Emby.Naming/AudioBook/AudioBookListResolver.cs b/Emby.Naming/AudioBook/AudioBookListResolver.cs index 8cf6a03bd8..4e3ad7cac8 100644 --- a/Emby.Naming/AudioBook/AudioBookListResolver.cs +++ b/Emby.Naming/AudioBook/AudioBookListResolver.cs @@ -1,6 +1,4 @@ -using System; using System.Collections.Generic; -using System.IO; using System.Linq; using Emby.Naming.Common; using Emby.Naming.Video; diff --git a/Emby.Naming/AudioBook/AudioBookResolver.cs b/Emby.Naming/AudioBook/AudioBookResolver.cs index 7c658f43a8..f8f13bc5e4 100644 --- a/Emby.Naming/AudioBook/AudioBookResolver.cs +++ b/Emby.Naming/AudioBook/AudioBookResolver.cs @@ -1,9 +1,7 @@ -using System; +using System; using System.IO; using System.Linq; using Emby.Naming.Common; -using Emby.Naming.TV; -using Emby.Naming.Video; namespace Emby.Naming.AudioBook { diff --git a/Emby.Naming/Common/EpisodeExpression.cs b/Emby.Naming/Common/EpisodeExpression.cs index 3b9687c60b..fd85bf76ad 100644 --- a/Emby.Naming/Common/EpisodeExpression.cs +++ b/Emby.Naming/Common/EpisodeExpression.cs @@ -1,12 +1,13 @@ -using System.Text.RegularExpressions; using System; +using System.Text.RegularExpressions; namespace Emby.Naming.Common { public class EpisodeExpression { private string _expression; - public string Expression { get { return _expression; } set { _expression = value; _regex = null; } } + public string Expression { get => _expression; + set { _expression = value; _regex = null; } } public bool IsByDate { get; set; } public bool IsOptimistic { get; set; } @@ -16,13 +17,7 @@ namespace Emby.Naming.Common public string[] DateTimeFormats { get; set; } private Regex _regex; - public Regex Regex - { - get - { - return _regex ?? (_regex = new Regex(Expression, RegexOptions.IgnoreCase | RegexOptions.Compiled)); - } - } + public Regex Regex => _regex ?? (_regex = new Regex(Expression, RegexOptions.IgnoreCase | RegexOptions.Compiled)); public EpisodeExpression(string expression, bool byDate) { diff --git a/Emby.Naming/Common/MediaType.cs b/Emby.Naming/Common/MediaType.cs index 2a3d433cf8..49cc9ee39b 100644 --- a/Emby.Naming/Common/MediaType.cs +++ b/Emby.Naming/Common/MediaType.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Common { public enum MediaType diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index 014f4ebde6..2ef0208baf 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -1,8 +1,7 @@ -using Emby.Naming.Video; -using System.Collections.Generic; using System; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Video; namespace Emby.Naming.Common { diff --git a/Emby.Naming/Emby.Naming.csproj b/Emby.Naming/Emby.Naming.csproj index de40a39d20..88e3af522d 100644 --- a/Emby.Naming/Emby.Naming.csproj +++ b/Emby.Naming/Emby.Naming.csproj @@ -5,13 +5,6 @@ false - - Jellyfin Contributors - Jellyfin.Naming - https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt - https://github.com/jellyfin/jellyfin - - @@ -20,4 +13,11 @@ + + Jellyfin Contributors + Jellyfin.Naming + https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt + https://github.com/jellyfin/jellyfin + + diff --git a/Emby.Naming/Extensions/StringExtensions.cs b/Emby.Naming/Extensions/StringExtensions.cs index e773dbfe8e..26c09aeb40 100644 --- a/Emby.Naming/Extensions/StringExtensions.cs +++ b/Emby.Naming/Extensions/StringExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text; namespace Emby.Naming.Extensions diff --git a/Emby.Naming/StringExtensions.cs b/Emby.Naming/StringExtensions.cs index 5598ddb4c2..7c61922af3 100644 --- a/Emby.Naming/StringExtensions.cs +++ b/Emby.Naming/StringExtensions.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System; using System.Text; namespace Emby.Naming diff --git a/Emby.Naming/Subtitles/SubtitleInfo.cs b/Emby.Naming/Subtitles/SubtitleInfo.cs index 3ece0679ea..e4709dfbb6 100644 --- a/Emby.Naming/Subtitles/SubtitleInfo.cs +++ b/Emby.Naming/Subtitles/SubtitleInfo.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Subtitles { public class SubtitleInfo diff --git a/Emby.Naming/Subtitles/SubtitleParser.cs b/Emby.Naming/Subtitles/SubtitleParser.cs index 9c279cc096..ac9432d57d 100644 --- a/Emby.Naming/Subtitles/SubtitleParser.cs +++ b/Emby.Naming/Subtitles/SubtitleParser.cs @@ -1,7 +1,7 @@ -using Emby.Naming.Common; using System; using System.IO; using System.Linq; +using Emby.Naming.Common; namespace Emby.Naming.Subtitles { diff --git a/Emby.Naming/TV/EpisodeInfo.cs b/Emby.Naming/TV/EpisodeInfo.cs index 41397480ec..c8aca7a6f3 100644 --- a/Emby.Naming/TV/EpisodeInfo.cs +++ b/Emby.Naming/TV/EpisodeInfo.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.TV { public class EpisodeInfo diff --git a/Emby.Naming/TV/EpisodePathParser.cs b/Emby.Naming/TV/EpisodePathParser.cs index 813be3f7ae..9485d697b1 100644 --- a/Emby.Naming/TV/EpisodePathParser.cs +++ b/Emby.Naming/TV/EpisodePathParser.cs @@ -1,9 +1,9 @@ -using Emby.Naming.Common; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Common; namespace Emby.Naming.TV { @@ -122,8 +122,7 @@ namespace Emby.Naming.TV } else if (expression.IsNamed) { - int num; - if (int.TryParse(match.Groups["seasonnumber"].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out num)) + if (int.TryParse(match.Groups["seasonnumber"].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var num)) { result.SeasonNumber = num; } @@ -133,7 +132,7 @@ namespace Emby.Naming.TV result.EpisodeNumber = num; } - Group endingNumberGroup = match.Groups["endingepnumber"]; + var endingNumberGroup = match.Groups["endingepnumber"]; if (endingNumberGroup.Success) { // Will only set EndingEpsiodeNumber if the captured number is not followed by additional numbers @@ -154,8 +153,7 @@ namespace Emby.Naming.TV } else { - int num; - if (int.TryParse(match.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out num)) + if (int.TryParse(match.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var num)) { result.SeasonNumber = num; } diff --git a/Emby.Naming/TV/EpisodePathParserResult.cs b/Emby.Naming/TV/EpisodePathParserResult.cs index 9890c78a45..e1a48bfbc9 100644 --- a/Emby.Naming/TV/EpisodePathParserResult.cs +++ b/Emby.Naming/TV/EpisodePathParserResult.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.TV { public class EpisodePathParserResult diff --git a/Emby.Naming/TV/EpisodeResolver.cs b/Emby.Naming/TV/EpisodeResolver.cs index ec5ae2fbfe..49a3558bd6 100644 --- a/Emby.Naming/TV/EpisodeResolver.cs +++ b/Emby.Naming/TV/EpisodeResolver.cs @@ -1,8 +1,8 @@ -using Emby.Naming.Common; -using Emby.Naming.Video; using System; using System.IO; using System.Linq; +using Emby.Naming.Common; +using Emby.Naming.Video; namespace Emby.Naming.TV { diff --git a/Emby.Naming/TV/SeasonPathParser.cs b/Emby.Naming/TV/SeasonPathParser.cs index 72277e6b9e..f1dcc50b89 100644 --- a/Emby.Naming/TV/SeasonPathParser.cs +++ b/Emby.Naming/TV/SeasonPathParser.cs @@ -1,8 +1,8 @@ -using Emby.Naming.Common; using System; using System.Globalization; using System.IO; using System.Linq; +using Emby.Naming.Common; namespace Emby.Naming.TV { @@ -72,8 +72,7 @@ namespace Emby.Naming.TV if (supportNumericSeasonFolders) { - int val; - if (int.TryParse(filename, NumberStyles.Integer, CultureInfo.InvariantCulture, out val)) + if (int.TryParse(filename, NumberStyles.Integer, CultureInfo.InvariantCulture, out var val)) { return new Tuple(val, true); } @@ -83,8 +82,7 @@ namespace Emby.Naming.TV { var testFilename = filename.Substring(1); - int val; - if (int.TryParse(testFilename, NumberStyles.Integer, CultureInfo.InvariantCulture, out val)) + if (int.TryParse(testFilename, NumberStyles.Integer, CultureInfo.InvariantCulture, out var val)) { return new Tuple(val, true); } @@ -121,8 +119,7 @@ namespace Emby.Naming.TV part = part.Substring(1); - int value; - if (int.TryParse(part, NumberStyles.Integer, CultureInfo.InvariantCulture, out value)) + if (int.TryParse(part, NumberStyles.Integer, CultureInfo.InvariantCulture, out var value)) { return value; } diff --git a/Emby.Naming/TV/SeasonPathParserResult.cs b/Emby.Naming/TV/SeasonPathParserResult.cs index 9a18d0a036..eab27a4a5f 100644 --- a/Emby.Naming/TV/SeasonPathParserResult.cs +++ b/Emby.Naming/TV/SeasonPathParserResult.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.TV { public class SeasonPathParserResult diff --git a/Emby.Naming/Video/CleanDateTimeParser.cs b/Emby.Naming/Video/CleanDateTimeParser.cs index ee6ec8ba07..74807ef53f 100644 --- a/Emby.Naming/Video/CleanDateTimeParser.cs +++ b/Emby.Naming/Video/CleanDateTimeParser.cs @@ -1,9 +1,9 @@ using System; -using Emby.Naming.Common; using System.Globalization; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Common; namespace Emby.Naming.Video { @@ -71,8 +71,7 @@ namespace Emby.Naming.Video if (match.Success && match.Groups.Count == 4) { - int year; - if (match.Groups[1].Success && match.Groups[2].Success && int.TryParse(match.Groups[2].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out year)) + if (match.Groups[1].Success && match.Groups[2].Success && int.TryParse(match.Groups[2].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var year)) { name = match.Groups[1].Value; result.Year = year; diff --git a/Emby.Naming/Video/CleanDateTimeResult.cs b/Emby.Naming/Video/CleanDateTimeResult.cs index 946fd953c1..6bf24e4d85 100644 --- a/Emby.Naming/Video/CleanDateTimeResult.cs +++ b/Emby.Naming/Video/CleanDateTimeResult.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Video { public class CleanDateTimeResult diff --git a/Emby.Naming/Video/CleanStringResult.cs b/Emby.Naming/Video/CleanStringResult.cs index 0282863e06..b3bc597125 100644 --- a/Emby.Naming/Video/CleanStringResult.cs +++ b/Emby.Naming/Video/CleanStringResult.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Video { public class CleanStringResult diff --git a/Emby.Naming/Video/ExtraResolver.cs b/Emby.Naming/Video/ExtraResolver.cs index bde1a47656..3459b689ac 100644 --- a/Emby.Naming/Video/ExtraResolver.cs +++ b/Emby.Naming/Video/ExtraResolver.cs @@ -1,9 +1,9 @@ -using Emby.Naming.Audio; -using Emby.Naming.Common; using System; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Audio; +using Emby.Naming.Common; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/ExtraResult.cs b/Emby.Naming/Video/ExtraResult.cs index ca79af9da7..ff6f20c47f 100644 --- a/Emby.Naming/Video/ExtraResult.cs +++ b/Emby.Naming/Video/ExtraResult.cs @@ -1,5 +1,3 @@ -using System.Collections.Generic; - namespace Emby.Naming.Video { public class ExtraResult diff --git a/Emby.Naming/Video/ExtraRule.cs b/Emby.Naming/Video/ExtraRule.cs index ef83b3cd6c..b8eb8427e7 100644 --- a/Emby.Naming/Video/ExtraRule.cs +++ b/Emby.Naming/Video/ExtraRule.cs @@ -1,4 +1,4 @@ -using Emby.Naming.Common; +using Emby.Naming.Common; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/ExtraRuleType.cs b/Emby.Naming/Video/ExtraRuleType.cs index 323c7cef60..565239ff9a 100644 --- a/Emby.Naming/Video/ExtraRuleType.cs +++ b/Emby.Naming/Video/ExtraRuleType.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Video { public enum ExtraRuleType diff --git a/Emby.Naming/Video/FileStack.cs b/Emby.Naming/Video/FileStack.cs index 2feea4cb3a..2df1e9aed1 100644 --- a/Emby.Naming/Video/FileStack.cs +++ b/Emby.Naming/Video/FileStack.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; diff --git a/Emby.Naming/Video/FlagParser.cs b/Emby.Naming/Video/FlagParser.cs index ef785ebf9d..bb129499be 100644 --- a/Emby.Naming/Video/FlagParser.cs +++ b/Emby.Naming/Video/FlagParser.cs @@ -1,6 +1,6 @@ -using Emby.Naming.Common; using System; using System.IO; +using Emby.Naming.Common; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/Format3DParser.cs b/Emby.Naming/Video/Format3DParser.cs index e335d10554..e6f830c583 100644 --- a/Emby.Naming/Video/Format3DParser.cs +++ b/Emby.Naming/Video/Format3DParser.cs @@ -1,6 +1,6 @@ -using Emby.Naming.Common; using System; using System.Linq; +using Emby.Naming.Common; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/Format3DResult.cs b/Emby.Naming/Video/Format3DResult.cs index 147ccfc057..e12494079c 100644 --- a/Emby.Naming/Video/Format3DResult.cs +++ b/Emby.Naming/Video/Format3DResult.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/Format3DRule.cs b/Emby.Naming/Video/Format3DRule.cs index 3c173efbc7..dc260175af 100644 --- a/Emby.Naming/Video/Format3DRule.cs +++ b/Emby.Naming/Video/Format3DRule.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Video { public class Format3DRule diff --git a/Emby.Naming/Video/StackResolver.cs b/Emby.Naming/Video/StackResolver.cs index 995e95d421..4893002c1b 100644 --- a/Emby.Naming/Video/StackResolver.cs +++ b/Emby.Naming/Video/StackResolver.cs @@ -1,9 +1,9 @@ -using Emby.Naming.Common; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Emby.Naming.Common; using MediaBrowser.Model.IO; namespace Emby.Naming.Video diff --git a/Emby.Naming/Video/StackResult.cs b/Emby.Naming/Video/StackResult.cs index 920a7dea73..de35d2825a 100644 --- a/Emby.Naming/Video/StackResult.cs +++ b/Emby.Naming/Video/StackResult.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/StubResolver.cs b/Emby.Naming/Video/StubResolver.cs index 33d6baefd3..7925f381d6 100644 --- a/Emby.Naming/Video/StubResolver.cs +++ b/Emby.Naming/Video/StubResolver.cs @@ -1,7 +1,7 @@ -using Emby.Naming.Common; using System; using System.IO; using System.Linq; +using Emby.Naming.Common; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/StubResult.cs b/Emby.Naming/Video/StubResult.cs index c9d06c9a7f..5976813372 100644 --- a/Emby.Naming/Video/StubResult.cs +++ b/Emby.Naming/Video/StubResult.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/StubTypeRule.cs b/Emby.Naming/Video/StubTypeRule.cs index 66ebfc3a26..b46050085d 100644 --- a/Emby.Naming/Video/StubTypeRule.cs +++ b/Emby.Naming/Video/StubTypeRule.cs @@ -1,4 +1,3 @@ - namespace Emby.Naming.Video { public class StubTypeRule diff --git a/Emby.Naming/Video/VideoFileInfo.cs b/Emby.Naming/Video/VideoFileInfo.cs index 3cdc483ff3..6a29ada7ea 100644 --- a/Emby.Naming/Video/VideoFileInfo.cs +++ b/Emby.Naming/Video/VideoFileInfo.cs @@ -1,4 +1,4 @@ - + namespace Emby.Naming.Video { /// @@ -65,10 +65,7 @@ namespace Emby.Naming.Video /// Gets the file name without extension. /// /// The file name without extension. - public string FileNameWithoutExtension - { - get { return !IsDirectory ? System.IO.Path.GetFileNameWithoutExtension(Path) : System.IO.Path.GetFileName(Path); } - } + public string FileNameWithoutExtension => !IsDirectory ? System.IO.Path.GetFileNameWithoutExtension(Path) : System.IO.Path.GetFileName(Path); public override string ToString() { diff --git a/Emby.Naming/Video/VideoInfo.cs b/Emby.Naming/Video/VideoInfo.cs index 033a8ae2d0..d96d0e7571 100644 --- a/Emby.Naming/Video/VideoInfo.cs +++ b/Emby.Naming/Video/VideoInfo.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/VideoListResolver.cs b/Emby.Naming/Video/VideoListResolver.cs index 45d4593de2..0506d0734c 100644 --- a/Emby.Naming/Video/VideoListResolver.cs +++ b/Emby.Naming/Video/VideoListResolver.cs @@ -1,10 +1,10 @@ -using Emby.Naming.Common; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using MediaBrowser.Model.IO; using System.Text.RegularExpressions; +using Emby.Naming.Common; +using MediaBrowser.Model.IO; namespace Emby.Naming.Video { diff --git a/Emby.Naming/Video/VideoResolver.cs b/Emby.Naming/Video/VideoResolver.cs index f6ab8cb87f..9bd0cb3dfb 100644 --- a/Emby.Naming/Video/VideoResolver.cs +++ b/Emby.Naming/Video/VideoResolver.cs @@ -1,7 +1,7 @@ -using Emby.Naming.Common; using System; using System.IO; using System.Linq; +using Emby.Naming.Common; namespace Emby.Naming.Video { @@ -40,7 +40,7 @@ namespace Emby.Naming.Video /// The path. /// if set to true [is folder]. /// VideoFileInfo. - /// path + /// path public VideoFileInfo Resolve(string path, bool IsDirectory, bool parseName = true) { if (string.IsNullOrEmpty(path)) diff --git a/Emby.Notifications/Api/NotificationsService.cs b/Emby.Notifications/Api/NotificationsService.cs index d09552ebc0..83845558ad 100644 --- a/Emby.Notifications/Api/NotificationsService.cs +++ b/Emby.Notifications/Api/NotificationsService.cs @@ -1,14 +1,14 @@ -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Notifications; -using MediaBrowser.Model.Notifications; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Services; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Notifications; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Notifications; +using MediaBrowser.Model.Services; namespace Emby.Notifications.Api { diff --git a/Emby.Notifications/CoreNotificationTypes.cs b/Emby.Notifications/CoreNotificationTypes.cs index b45a75b1e8..158898084c 100644 --- a/Emby.Notifications/CoreNotificationTypes.cs +++ b/Emby.Notifications/CoreNotificationTypes.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller; -using MediaBrowser.Controller.Notifications; -using MediaBrowser.Model.Notifications; using System; using System.Collections.Generic; using System.Linq; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Notifications; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.Notifications; namespace Emby.Notifications { diff --git a/Emby.Notifications/Emby.Notifications.csproj b/Emby.Notifications/Emby.Notifications.csproj index 5b5ae445e6..14caa4a550 100644 --- a/Emby.Notifications/Emby.Notifications.csproj +++ b/Emby.Notifications/Emby.Notifications.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 diff --git a/Emby.Notifications/NotificationConfigurationFactory.cs b/Emby.Notifications/NotificationConfigurationFactory.cs index 2d464910e9..d08475f7d2 100644 --- a/Emby.Notifications/NotificationConfigurationFactory.cs +++ b/Emby.Notifications/NotificationConfigurationFactory.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.Notifications; using System.Collections.Generic; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Notifications; namespace Emby.Notifications { diff --git a/Emby.Notifications/NotificationManager.cs b/Emby.Notifications/NotificationManager.cs index fa8fdd9c15..3d1d4722dd 100644 --- a/Emby.Notifications/NotificationManager.cs +++ b/Emby.Notifications/NotificationManager.cs @@ -1,18 +1,17 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Notifications; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Notifications; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Notifications; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Notifications; +using Microsoft.Extensions.Logging; namespace Emby.Notifications { diff --git a/Emby.Notifications/Notifications.cs b/Emby.Notifications/Notifications.cs index 101f9706cf..fbdc39f94f 100644 --- a/Emby.Notifications/Notifications.cs +++ b/Emby.Notifications/Notifications.cs @@ -1,27 +1,27 @@ -using MediaBrowser.Common.Configuration; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Updates; using MediaBrowser.Controller; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Notifications; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.Activity; +using MediaBrowser.Model.Events; +using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Notifications; using MediaBrowser.Model.Tasks; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Activity; -using MediaBrowser.Model.Events; +using Microsoft.Extensions.Logging; namespace Emby.Notifications { diff --git a/Emby.Photos/Emby.Photos.csproj b/Emby.Photos/Emby.Photos.csproj index 3ecab9176a..e6b445202f 100644 --- a/Emby.Photos/Emby.Photos.csproj +++ b/Emby.Photos/Emby.Photos.csproj @@ -1,4 +1,4 @@ - + diff --git a/Emby.Photos/PhotoProvider.cs b/Emby.Photos/PhotoProvider.cs index 726fd1d79d..4fcd418f0b 100644 --- a/Emby.Photos/PhotoProvider.cs +++ b/Emby.Photos/PhotoProvider.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using System.Threading; @@ -7,6 +7,7 @@ using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; @@ -14,7 +15,6 @@ using TagLib; using TagLib.IFD; using TagLib.IFD.Entries; using TagLib.IFD.Tags; -using MediaBrowser.Model.MediaInfo; namespace Emby.Photos { @@ -145,8 +145,7 @@ namespace Emby.Photos } else { - MediaBrowser.Model.Drawing.ImageOrientation orientation; - if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out orientation)) + if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out ImageOrientation orientation)) { item.Orientation = orientation; } @@ -200,9 +199,6 @@ namespace Emby.Photos return Task.FromResult(result); } - public string Name - { - get { return "Embedded Information"; } - } + public string Name => "Embedded Information"; } } diff --git a/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs b/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs index eca1ff0f50..a8e8f815a0 100644 --- a/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs +++ b/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs @@ -1,29 +1,28 @@ -using MediaBrowser.Common.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Updates; using MediaBrowser.Controller; +using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; using MediaBrowser.Controller.Subtitles; using MediaBrowser.Model.Activity; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Tasks; -using MediaBrowser.Model.Updates; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Notifications; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Dto; -using MediaBrowser.Controller.Devices; -using MediaBrowser.Controller.Authentication; +using MediaBrowser.Model.Tasks; +using MediaBrowser.Model.Updates; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Activity { @@ -528,7 +527,7 @@ namespace Emby.Server.Implementations.Activity const int DaysInMonth = 30; // Get each non-zero value from TimeSpan component - List values = new List(); + var values = new List(); // Number of years int days = span.Days; @@ -559,7 +558,7 @@ namespace Emby.Server.Implementations.Activity values.Add(CreateValueString(span.Seconds, "second")); // Combine values into string - StringBuilder builder = new StringBuilder(); + var builder = new StringBuilder(); for (int i = 0; i < values.Count; i++) { if (builder.Length > 0) diff --git a/Emby.Server.Implementations/Activity/ActivityManager.cs b/Emby.Server.Implementations/Activity/ActivityManager.cs index 0bb44a9d55..e526acb0df 100644 --- a/Emby.Server.Implementations/Activity/ActivityManager.cs +++ b/Emby.Server.Implementations/Activity/ActivityManager.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller.Library; +using System; +using System.Linq; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Activity; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Querying; -using System; -using System.Linq; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Activity { diff --git a/Emby.Server.Implementations/Activity/ActivityRepository.cs b/Emby.Server.Implementations/Activity/ActivityRepository.cs index 822219132e..9e624cd02a 100644 --- a/Emby.Server.Implementations/Activity/ActivityRepository.cs +++ b/Emby.Server.Implementations/Activity/ActivityRepository.cs @@ -6,11 +6,10 @@ using System.Linq; using Emby.Server.Implementations.Data; using MediaBrowser.Controller; using MediaBrowser.Model.Activity; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; +using Microsoft.Extensions.Logging; using SQLitePCL.pretty; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Activity { diff --git a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs index 3ad2d4b91f..e4a2cd9dff 100644 --- a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs +++ b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs @@ -1,4 +1,4 @@ -using System.IO; +using System.IO; using MediaBrowser.Common.Configuration; namespace Emby.Server.Implementations.AppBase diff --git a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs index 222a93a106..59c7c655f1 100644 --- a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs +++ b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs @@ -9,8 +9,8 @@ using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.AppBase { @@ -151,7 +151,7 @@ namespace Emby.Server.Implementations.AppBase /// Replaces the configuration. /// /// The new configuration. - /// newConfiguration + /// newConfiguration public virtual void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration) { if (newConfiguration == null) @@ -188,7 +188,7 @@ namespace Emby.Server.Implementations.AppBase /// Replaces the cache path. /// /// The new configuration. - /// + /// private void ValidateCachePath(BaseApplicationConfiguration newConfig) { var newPath = newConfig.CachePath; @@ -284,7 +284,7 @@ namespace Emby.Server.Implementations.AppBase validatingStore.Validate(currentConfiguration, configuration); } - NamedConfigurationUpdating?.Invoke( this, new ConfigurationUpdateEventArgs + NamedConfigurationUpdating?.Invoke(this, new ConfigurationUpdateEventArgs { Key = key, NewConfiguration = configuration diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index 283d6b6d71..91eaf9bbf2 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -1,9 +1,24 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Runtime.InteropServices; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading; +using System.Threading.Tasks; using Emby.Common.Implementations.Serialization; -using Emby.Drawing; -using Emby.Photos; using Emby.Dlna; using Emby.Dlna.Main; using Emby.Dlna.Ssdp; +using Emby.Drawing; +using Emby.Notifications; +using Emby.Photos; using Emby.Server.Implementations.Activity; using Emby.Server.Implementations.Archiving; using Emby.Server.Implementations.Channels; @@ -22,7 +37,6 @@ using Emby.Server.Implementations.Library; using Emby.Server.Implementations.LiveTv; using Emby.Server.Implementations.Localization; using Emby.Server.Implementations.Net; -using Emby.Notifications; using Emby.Server.Implementations.Playlists; using Emby.Server.Implementations.Reflection; using Emby.Server.Implementations.ScheduledTasks; @@ -40,9 +54,9 @@ using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; -using MediaBrowser.Model.Extensions; using MediaBrowser.Common.Updates; using MediaBrowser.Controller; +using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Chapters; using MediaBrowser.Controller.Collections; @@ -75,6 +89,7 @@ using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.Diagnostics; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Events; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; @@ -93,26 +108,11 @@ using MediaBrowser.Providers.Manager; using MediaBrowser.Providers.Subtitles; using MediaBrowser.WebDashboard.Api; using MediaBrowser.XbmcMetadata.Providers; +using Microsoft.Extensions.Logging; using ServiceStack; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Runtime.InteropServices; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using System.Threading; -using System.Threading.Tasks; +using ServiceStack.Text.Jsv; using StringExtensions = MediaBrowser.Controller.Extensions.StringExtensions; using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate; -using MediaBrowser.Controller.Authentication; -using System.Diagnostics; -using ServiceStack.Text.Jsv; -using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations { @@ -812,7 +812,7 @@ namespace Emby.Server.Implementations RegisterSingleInstance(ServerConfigurationManager); IAssemblyInfo assemblyInfo = new AssemblyInfo(); - RegisterSingleInstance(assemblyInfo); + RegisterSingleInstance(assemblyInfo); LocalizationManager = new LocalizationManager(ServerConfigurationManager, FileSystemManager, JsonSerializer, LoggerFactory.CreateLogger("LocalizationManager"), assemblyInfo, new TextLocalizer()); StringExtensions.LocalizationManager = LocalizationManager; @@ -910,7 +910,7 @@ namespace Emby.Server.Implementations RegisterSingleInstance(CollectionManager); PlaylistManager = new PlaylistManager(LibraryManager, FileSystemManager, LibraryMonitor, LoggerFactory.CreateLogger("PlaylistManager"), UserManager, ProviderManager); - RegisterSingleInstance(PlaylistManager); + RegisterSingleInstance(PlaylistManager); LiveTvManager = new LiveTvManager(this, HttpClient, ServerConfigurationManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer, ProviderManager, FileSystemManager, () => ChannelManager); RegisterSingleInstance(LiveTvManager); @@ -928,7 +928,7 @@ namespace Emby.Server.Implementations RegisterMediaEncoder(assemblyInfo); - EncodingManager = new Emby.Server.Implementations.MediaEncoder.EncodingManager(FileSystemManager, Logger, MediaEncoder, ChapterManager, LibraryManager); + EncodingManager = new MediaEncoder.EncodingManager(FileSystemManager, Logger, MediaEncoder, ChapterManager, LibraryManager); RegisterSingleInstance(EncodingManager); var activityLogRepo = GetActivityLogRepository(); @@ -940,7 +940,7 @@ namespace Emby.Server.Implementations RegisterSingleInstance(new SessionContext(UserManager, authContext, SessionManager)); AuthService = new AuthService(UserManager, authContext, ServerConfigurationManager, SessionManager, NetworkManager); - RegisterSingleInstance(AuthService); + RegisterSingleInstance(AuthService); SubtitleEncoder = new MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder(LibraryManager, LoggerFactory.CreateLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, ProcessFactory, TextEncoding); RegisterSingleInstance(SubtitleEncoder); @@ -1013,7 +1013,7 @@ namespace Emby.Server.Implementations { var arr = str.ToCharArray(); - arr = Array.FindAll(arr, (c => (char.IsLetterOrDigit(c) + arr = Array.FindAll(arr, (c => (char.IsLetterOrDigit(c) || char.IsWhiteSpace(c)))); var result = new string(arr); @@ -1047,7 +1047,7 @@ namespace Emby.Server.Implementations // Don't use an empty string password var password = string.IsNullOrWhiteSpace(info.Password) ? null : info.Password; - X509Certificate2 localCert = new X509Certificate2(certificateLocation, password); + var localCert = new X509Certificate2(certificateLocation, password); //localCert.PrivateKey = PrivateKey.CreateFromFile(pvk_file).RSA; if (!localCert.HasPrivateKey) { @@ -1789,8 +1789,7 @@ namespace Emby.Server.Implementations return false; } - Version minRequiredVersion; - if (minRequiredVersions.TryGetValue(filename, out minRequiredVersion)) + if (minRequiredVersions.TryGetValue(filename, out Version minRequiredVersion)) { try { @@ -1926,7 +1925,7 @@ namespace Emby.Server.Implementations return GetLocalApiUrl(response.ReadToEnd().Trim()); } } - catch(Exception ex) + catch (Exception ex) { Logger.LogError(ex, "Error getting WAN Ip address information"); } @@ -2005,8 +2004,7 @@ namespace Emby.Server.Implementations address = address.Substring(index + 1); } - IpAddressInfo result; - if (NetworkManager.TryParseIpAddress(address.Trim('/'), out result)) + if (NetworkManager.TryParseIpAddress(address.Trim('/'), out IpAddressInfo result)) { return result; } @@ -2025,8 +2023,7 @@ namespace Emby.Server.Implementations var apiUrl = GetLocalApiUrl(address); apiUrl += "/system/ping"; - bool cachedResult; - if (_validAddressResults.TryGetValue(apiUrl, out cachedResult)) + if (_validAddressResults.TryGetValue(apiUrl, out var cachedResult)) { return cachedResult; } diff --git a/Emby.Server.Implementations/Archiving/ZipClient.cs b/Emby.Server.Implementations/Archiving/ZipClient.cs index 169e7af0a3..84072cde60 100644 --- a/Emby.Server.Implementations/Archiving/ZipClient.cs +++ b/Emby.Server.Implementations/Archiving/ZipClient.cs @@ -1,6 +1,5 @@ -using System.IO; +using System.IO; using MediaBrowser.Model.IO; -using SharpCompress.Archives.Rar; using SharpCompress.Archives.SevenZip; using SharpCompress.Archives.Tar; using SharpCompress.Common; diff --git a/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs b/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs index a29f55f168..b27f84848b 100644 --- a/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs +++ b/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.Branding; using System.Collections.Generic; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Branding; namespace Emby.Server.Implementations.Branding { diff --git a/Emby.Server.Implementations/Browser/BrowserLauncher.cs b/Emby.Server.Implementations/Browser/BrowserLauncher.cs index 4c9f442d19..718129ef09 100644 --- a/Emby.Server.Implementations/Browser/BrowserLauncher.cs +++ b/Emby.Server.Implementations/Browser/BrowserLauncher.cs @@ -1,5 +1,5 @@ -using MediaBrowser.Controller; using System; +using MediaBrowser.Controller; namespace Emby.Server.Implementations.Browser { diff --git a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs index 8448d36406..c10f00f9b8 100644 --- a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs +++ b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Dto; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Dto; namespace Emby.Server.Implementations.Channels { diff --git a/Emby.Server.Implementations/Channels/ChannelImageProvider.cs b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs index 7eded70c02..bafa68818b 100644 --- a/Emby.Server.Implementations/Channels/ChannelImageProvider.cs +++ b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; namespace Emby.Server.Implementations.Channels { diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs index 4cc3fd855b..f98e199e6b 100644 --- a/Emby.Server.Implementations/Channels/ChannelManager.cs +++ b/Emby.Server.Implementations/Channels/ChannelManager.cs @@ -1,37 +1,30 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; +using MediaBrowser.Common.Progress; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; -using MediaBrowser.Model.Net; +using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Common.Progress; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.IO; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Channels { @@ -394,9 +387,7 @@ namespace Emby.Server.Implementations.Channels private async Task> GetChannelItemMediaSourcesInternal(IRequiresMediaInfoCallback channel, string id, CancellationToken cancellationToken) { - Tuple> cachedInfo; - - if (_channelItemMediaInfo.TryGetValue(id, out cachedInfo)) + if (_channelItemMediaInfo.TryGetValue(id, out Tuple> cachedInfo)) { if ((DateTime.UtcNow - cachedInfo.Item1).TotalMinutes < 5) { @@ -625,7 +616,7 @@ namespace Emby.Server.Implementations.Channels if (sortByPremiereDate) { - query.OrderBy = new [] + query.OrderBy = new[] { new ValueTuple(ItemSortBy.PremiereDate, SortOrder.Descending), new ValueTuple(ItemSortBy.ProductionYear, SortOrder.Descending), @@ -634,7 +625,7 @@ namespace Emby.Server.Implementations.Channels } else { - query.OrderBy = new [] + query.OrderBy = new[] { new ValueTuple(ItemSortBy.DateCreated, SortOrder.Descending) }; diff --git a/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs index bd717bc6ab..ad6c537ef0 100644 --- a/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs +++ b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Channels { diff --git a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs index c1e9fad8a6..844f77a1ab 100644 --- a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs +++ b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs @@ -1,12 +1,12 @@ -using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Progress; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Channels { diff --git a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs index 858dada4b4..6642d1ef4c 100644 --- a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs +++ b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs @@ -1,4 +1,8 @@ -using MediaBrowser.Common.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using Emby.Server.Implementations.Images; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; @@ -6,13 +10,8 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Emby.Server.Implementations.Images; -using MediaBrowser.Model.IO; using MediaBrowser.Model.Extensions; -using System; +using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Collections { diff --git a/Emby.Server.Implementations/Collections/CollectionManager.cs b/Emby.Server.Implementations/Collections/CollectionManager.cs index d1d7931360..213bb35e4b 100644 --- a/Emby.Server.Implementations/Collections/CollectionManager.cs +++ b/Emby.Server.Implementations/Collections/CollectionManager.cs @@ -1,24 +1,22 @@ -using MediaBrowser.Common.Events; -using MediaBrowser.Controller.Collections; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Extensions; using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Collections; using MediaBrowser.Controller.Configuration; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Collections { diff --git a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs index 6180645e41..ab2e1c9a96 100644 --- a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs +++ b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using Emby.Server.Implementations.AppBase; @@ -8,8 +8,8 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Configuration { @@ -119,7 +119,7 @@ namespace Emby.Server.Implementations.Configuration /// Replaces the configuration. /// /// The new configuration. - /// + /// public override void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration) { var newConfig = (ServerConfiguration)newConfiguration; @@ -137,7 +137,7 @@ namespace Emby.Server.Implementations.Configuration /// Validates the SSL certificate. /// /// The new configuration. - /// + /// private void ValidateSslCertificate(BaseApplicationConfiguration newConfig) { var serverConfig = (ServerConfiguration)newConfig; @@ -159,7 +159,7 @@ namespace Emby.Server.Implementations.Configuration /// Validates the metadata path. /// /// The new configuration. - /// + /// private void ValidateMetadataPath(ServerConfiguration newConfig) { var newPath = newConfig.MetadataPath; diff --git a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs index 6402da0c99..09fdbc856d 100644 --- a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs +++ b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Security.Cryptography; using System.Text; diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs index c714ba91b6..0f432c36c0 100644 --- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs +++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs @@ -1,12 +1,11 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Threading; -using System.Threading.Tasks; using Microsoft.Extensions.Logging; -using SQLitePCL.pretty; -using System.Linq; using SQLitePCL; +using SQLitePCL.pretty; namespace Emby.Server.Implementations.Data { @@ -255,7 +254,7 @@ namespace Emby.Server.Implementations.Data { if (_disposed) { - throw new ObjectDisposedException(GetType().Name ,"Object has been disposed and cannot be accessed."); + throw new ObjectDisposedException(GetType().Name, "Object has been disposed and cannot be accessed."); } } diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs index 536cf21f6c..dcfe149434 100644 --- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs +++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs @@ -1,16 +1,12 @@ -using MediaBrowser.Common.Progress; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Persistence; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; using System; -using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Data { diff --git a/Emby.Server.Implementations/Data/ManagedConnection.cs b/Emby.Server.Implementations/Data/ManagedConnection.cs index 91a2dfdf62..b8f1e581ab 100644 --- a/Emby.Server.Implementations/Data/ManagedConnection.cs +++ b/Emby.Server.Implementations/Data/ManagedConnection.cs @@ -1,13 +1,10 @@ -using System; +using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using SQLitePCL.pretty; namespace Emby.Server.Implementations.Data { - public class ManagedConnection : IDisposable + public class ManagedConnection : IDisposable { private SQLiteDatabaseConnection db; private readonly bool _closeOnDispose; @@ -50,7 +47,7 @@ namespace Emby.Server.Implementations.Data public T RunInTransaction(Func action, TransactionMode mode) { - return db.RunInTransaction(action, mode); + return db.RunInTransaction(action, mode); } public IEnumerable> Query(string sql) diff --git a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs index 49d8f79a2e..9ed2b49e58 100644 --- a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Threading; @@ -7,8 +7,8 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; using SQLitePCL.pretty; namespace Emby.Server.Implementations.Data @@ -83,7 +83,7 @@ namespace Emby.Server.Implementations.Data /// The client. /// The cancellation token. /// Task. - /// item + /// item public void SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client, CancellationToken cancellationToken) { if (displayPreferences == null) @@ -131,7 +131,7 @@ namespace Emby.Server.Implementations.Data /// The user id. /// The cancellation token. /// Task. - /// item + /// item public void SaveAllDisplayPreferences(IEnumerable displayPreferences, Guid userId, CancellationToken cancellationToken) { if (displayPreferences == null) @@ -163,7 +163,7 @@ namespace Emby.Server.Implementations.Data /// The user id. /// The client. /// Task{DisplayPreferences}. - /// item + /// item public DisplayPreferences GetDisplayPreferences(string displayPreferencesId, Guid userId, string client) { if (string.IsNullOrEmpty(displayPreferencesId)) @@ -202,7 +202,7 @@ namespace Emby.Server.Implementations.Data /// /// The user id. /// Task{DisplayPreferences}. - /// item + /// item public IEnumerable GetAllDisplayPreferences(Guid userId) { var list = new List(); diff --git a/Emby.Server.Implementations/Data/SqliteExtensions.cs b/Emby.Server.Implementations/Data/SqliteExtensions.cs index d9b2db56e7..a486cb1a06 100644 --- a/Emby.Server.Implementations/Data/SqliteExtensions.cs +++ b/Emby.Server.Implementations/Data/SqliteExtensions.cs @@ -1,10 +1,9 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; -using MediaBrowser.Model.IO; +using System.IO; using MediaBrowser.Model.Serialization; using SQLitePCL.pretty; -using System.IO; namespace Emby.Server.Implementations.Data { @@ -115,9 +114,7 @@ namespace Emby.Server.Implementations.Data { var dateText = result.ToString(); - DateTime dateTimeResult; - - if (DateTime.TryParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dateTimeResult)) + if (DateTime.TryParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out var dateTimeResult)) { return dateTimeResult.ToUniversalTime(); } @@ -129,7 +126,7 @@ namespace Emby.Server.Implementations.Data /// Serializes to bytes. /// /// System.Byte[][]. - /// obj + /// obj public static byte[] SerializeToBytes(this IJsonSerializer json, object obj) { if (obj == null) @@ -202,8 +199,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, double value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -215,8 +211,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, string value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { if (value == null) { @@ -235,8 +230,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, bool value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -248,8 +242,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, float value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -261,8 +254,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, int value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -274,8 +266,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, Guid value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value.ToGuidBlob()); } @@ -287,8 +278,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, DateTime value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value.ToDateTimeParamValue()); } @@ -300,8 +290,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, long value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -313,8 +302,7 @@ namespace Emby.Server.Implementations.Data public static void TryBind(this IStatement statement, string name, byte[] value) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.Bind(value); } @@ -326,8 +314,7 @@ namespace Emby.Server.Implementations.Data public static void TryBindNull(this IStatement statement, string name) { - IBindParameter bindParam; - if (statement.BindParameters.TryGetValue(name, out bindParam)) + if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam)) { bindParam.BindNull(); } diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index f1894fd4f2..727a9e8688 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -6,17 +6,17 @@ using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading; -using System.Threading.Tasks; -using Emby.Server.Implementations.Devices; using Emby.Server.Implementations.Playlists; +using MediaBrowser.Controller; using MediaBrowser.Controller.Channels; -using MediaBrowser.Controller.Collections; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Playlists; @@ -24,17 +24,13 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Querying; -using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Reflection; -using SQLitePCL.pretty; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; +using SQLitePCL.pretty; namespace Emby.Server.Implementations.Data { @@ -49,13 +45,7 @@ namespace Emby.Server.Implementations.Data /// Gets the name of the repository /// /// The name. - public string Name - { - get - { - return "SQLite"; - } - } + public string Name => "SQLite"; /// /// Gets the json serializer. @@ -101,21 +91,9 @@ namespace Emby.Server.Implementations.Data private const string ChaptersTableName = "Chapters2"; - protected override int? CacheSize - { - get - { - return 20000; - } - } + protected override int? CacheSize => 20000; - protected override bool EnableTempStoreMemory - { - get - { - return true; - } - } + protected override bool EnableTempStoreMemory => true; /// /// Opens the connection to the database @@ -553,7 +531,7 @@ namespace Emby.Server.Implementations.Data /// /// The item. /// The cancellation token. - /// item + /// item public void SaveItem(BaseItem item, CancellationToken cancellationToken) { if (item == null) @@ -596,7 +574,7 @@ namespace Emby.Server.Implementations.Data /// /// The items. /// The cancellation token. - /// + /// /// items /// or /// cancellationToken @@ -1186,25 +1164,21 @@ namespace Emby.Server.Implementations.Data image.Path = RestorePath(parts[0]); - long ticks; - if (long.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out ticks)) + if (long.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out var ticks)) { image.DateModified = new DateTime(ticks, DateTimeKind.Utc); } - ImageType type; - if (Enum.TryParse(parts[2], true, out type)) + if (Enum.TryParse(parts[2], true, out ImageType type)) { image.Type = type; } if (parts.Length >= 5) { - int width; - int height; - if (int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out width)) + if (int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out var width)) { - if (int.TryParse(parts[4], NumberStyles.Integer, CultureInfo.InvariantCulture, out height)) + if (int.TryParse(parts[4], NumberStyles.Integer, CultureInfo.InvariantCulture, out var height)) { image.Width = width; image.Height = height; @@ -1220,8 +1194,8 @@ namespace Emby.Server.Implementations.Data /// /// The id. /// BaseItem. - /// id - /// + /// id + /// public BaseItem RetrieveItem(Guid id) { if (id.Equals(Guid.Empty)) @@ -1611,8 +1585,7 @@ namespace Emby.Server.Implementations.Data if (!reader.IsDBNull(index)) { - ProgramAudio audio; - if (Enum.TryParse(reader.GetString(index), true, out audio)) + if (Enum.TryParse(reader.GetString(index), true, out ProgramAudio audio)) { item.Audio = audio; } @@ -1656,9 +1629,7 @@ namespace Emby.Server.Implementations.Data item.LockedFields = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select( i => { - MetadataFields parsedValue; - - if (Enum.TryParse(i, true, out parsedValue)) + if (Enum.TryParse(i, true, out MetadataFields parsedValue)) { return parsedValue; } @@ -1696,9 +1667,7 @@ namespace Emby.Server.Implementations.Data trailer.TrailerTypes = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select( i => { - TrailerType parsedValue; - - if (Enum.TryParse(i, true, out parsedValue)) + if (Enum.TryParse(i, true, out TrailerType parsedValue)) { return parsedValue; } @@ -1879,8 +1848,7 @@ namespace Emby.Server.Implementations.Data if (!reader.IsDBNull(index)) { - ExtraType extraType; - if (Enum.TryParse(reader.GetString(index), true, out extraType)) + if (Enum.TryParse(reader.GetString(index), true, out ExtraType extraType)) { item.ExtraType = extraType; } @@ -1967,7 +1935,7 @@ namespace Emby.Server.Implementations.Data /// /// The item. /// IEnumerable{ChapterInfo}. - /// id + /// id public List GetChapters(BaseItem item) { CheckDisposed(); @@ -1999,7 +1967,7 @@ namespace Emby.Server.Implementations.Data /// The item. /// The index. /// ChapterInfo. - /// id + /// id public ChapterInfo GetChapter(BaseItem item, int index) { CheckDisposed(); @@ -5171,8 +5139,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type private IEnumerable MapIncludeItemTypes(string value) { - string[] result; - if (_types.TryGetValue(value, out result)) + if (_types.TryGetValue(value, out string[] result)) { return result; } diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs index cf60b71d63..48ff9ded80 100644 --- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs @@ -5,11 +5,11 @@ using System.Linq; using System.Threading; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; using SQLitePCL.pretty; -using MediaBrowser.Controller.Library; namespace Emby.Server.Implementations.Data { @@ -110,7 +110,7 @@ namespace Emby.Server.Implementations.Data private List GetAllUserIdsWithUserData(IDatabaseConnection db) { - List list = new List(); + var list = new List(); using (var statement = PrepareStatement(db, "select DISTINCT UserId from UserData where UserId not null")) { @@ -271,7 +271,7 @@ namespace Emby.Server.Implementations.Data /// The user id. /// The key. /// Task{UserItemData}. - /// + /// /// userId /// or /// key diff --git a/Emby.Server.Implementations/Data/SqliteUserRepository.cs b/Emby.Server.Implementations/Data/SqliteUserRepository.cs index 125f254c10..ad37a02753 100644 --- a/Emby.Server.Implementations/Data/SqliteUserRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteUserRepository.cs @@ -1,13 +1,11 @@ -using System; +using System; using System.Collections.Generic; using System.IO; -using System.Threading; using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Persistence; -using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; using SQLitePCL.pretty; namespace Emby.Server.Implementations.Data @@ -202,7 +200,7 @@ namespace Emby.Server.Implementations.Data /// /// The user. /// Task. - /// user + /// user public void DeleteUser(User user) { if (user == null) diff --git a/Emby.Server.Implementations/Data/TypeMapper.cs b/Emby.Server.Implementations/Data/TypeMapper.cs index e0c2de918f..37c952e88e 100644 --- a/Emby.Server.Implementations/Data/TypeMapper.cs +++ b/Emby.Server.Implementations/Data/TypeMapper.cs @@ -1,7 +1,7 @@ -using System; +using System; using System.Collections.Concurrent; -using MediaBrowser.Model.Reflection; using System.Linq; +using MediaBrowser.Model.Reflection; namespace Emby.Server.Implementations.Data { @@ -27,7 +27,7 @@ namespace Emby.Server.Implementations.Data /// /// Name of the type. /// Type. - /// + /// public Type GetType(string typeName) { if (string.IsNullOrEmpty(typeName)) diff --git a/Emby.Server.Implementations/Devices/DeviceId.cs b/Emby.Server.Implementations/Devices/DeviceId.cs index 4f5950ac73..56e555937a 100644 --- a/Emby.Server.Implementations/Devices/DeviceId.cs +++ b/Emby.Server.Implementations/Devices/DeviceId.cs @@ -25,8 +25,7 @@ namespace Emby.Server.Implementations.Devices { var value = File.ReadAllText(CachePath, Encoding.UTF8); - Guid guid; - if (Guid.TryParse(value, out guid)) + if (Guid.TryParse(value, out var guid)) { return value; } diff --git a/Emby.Server.Implementations/Devices/DeviceManager.cs b/Emby.Server.Implementations/Devices/DeviceManager.cs index c72334577e..f2ab28d4cf 100644 --- a/Emby.Server.Implementations/Devices/DeviceManager.cs +++ b/Emby.Server.Implementations/Devices/DeviceManager.cs @@ -1,30 +1,29 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Devices; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Devices; -using MediaBrowser.Model.Events; -using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Querying; -using MediaBrowser.Model.Session; -using MediaBrowser.Model.Users; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; -using MediaBrowser.Model.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Entities; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; -using MediaBrowser.Model.Globalization; using MediaBrowser.Controller.Security; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Devices; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Events; +using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.Net; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Model.Session; +using MediaBrowser.Model.Users; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Devices { @@ -99,8 +98,7 @@ namespace Emby.Server.Implementations.Devices { lock (_capabilitiesSyncLock) { - ClientCapabilities result; - if (_capabilitiesCache.TryGetValue(id, out result)) + if (_capabilitiesCache.TryGetValue(id, out var result)) { return result; } diff --git a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs index 99871a3c6a..d8a798c460 100644 --- a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs +++ b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs @@ -1,9 +1,9 @@ -using System; +using System; using System.Diagnostics; using System.IO; +using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Diagnostics; -using System.Threading; namespace Emby.Server.Implementations.Diagnostics { diff --git a/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs index a2c511cb97..14aadaaae7 100644 --- a/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs +++ b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Model.Diagnostics; +using MediaBrowser.Model.Diagnostics; namespace Emby.Server.Implementations.Diagnostics { diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs index 3d519f35dd..a45cde9805 100644 --- a/Emby.Server.Implementations/Dto/DtoService.cs +++ b/Emby.Server.Implementations/Dto/DtoService.cs @@ -1,3 +1,8 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; using MediaBrowser.Common; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; @@ -11,21 +16,15 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; -using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Querying; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Model.IO; using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Playlists; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.Querying; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Dto { @@ -72,7 +71,7 @@ namespace Emby.Server.Implementations.Dto /// The user. /// The owner. /// Task{DtoBaseItem}. - /// item + /// item public BaseItemDto GetBaseItemDto(BaseItem item, ItemFields[] fields, User user = null, BaseItem owner = null) { var options = new DtoOptions @@ -464,7 +463,7 @@ namespace Emby.Server.Implementations.Dto /// /// The item. /// System.String. - /// item + /// item public string GetDtoId(BaseItem item) { return item.Id.ToString("N"); @@ -638,9 +637,7 @@ namespace Emby.Server.Implementations.Dto Type = person.Type }; - Person entity; - - if (dictionary.TryGetValue(person.Name, out entity)) + if (dictionary.TryGetValue(person.Name, out Person entity)) { baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary); baseItemPerson.Id = entity.Id.ToString("N"); diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index da3a4da073..5a0e1da4d7 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -1,4 +1,4 @@ - + diff --git a/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs b/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs index a0947c87d5..0fc4c38583 100644 --- a/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs +++ b/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs @@ -1,16 +1,16 @@ -using MediaBrowser.Controller; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Controller.Session; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Tasks; using System; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Plugins; +using MediaBrowser.Controller.Session; using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { diff --git a/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs b/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs index 6c658a695f..8755ee3a7d 100644 --- a/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs +++ b/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Net; +using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Controller; @@ -9,10 +10,9 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; using Mono.Nat; -using System.Threading; namespace Emby.Server.Implementations.EntryPoints { @@ -108,11 +108,9 @@ namespace Emby.Server.Implementations.EntryPoints var info = e.Argument; - string usn; - if (!info.Headers.TryGetValue("USN", out usn)) usn = string.Empty; + if (!info.Headers.TryGetValue("USN", out string usn)) usn = string.Empty; - string nt; - if (!info.Headers.TryGetValue("NT", out nt)) nt = string.Empty; + if (!info.Headers.TryGetValue("NT", out string nt)) nt = string.Empty; // Filter device type if (usn.IndexOf("WANIPConnection:", StringComparison.OrdinalIgnoreCase) == -1 && @@ -141,8 +139,7 @@ namespace Emby.Server.Implementations.EntryPoints _logger.LogDebug("Found NAT device: " + identifier); - IPAddress address; - if (IPAddress.TryParse(info.Location.Host, out address)) + if (IPAddress.TryParse(info.Location.Host, out var address)) { // The Handle method doesn't need the port var endpoint = new IPEndPoint(address, info.Location.Port); @@ -153,8 +150,7 @@ namespace Emby.Server.Implementations.EntryPoints { var localAddressString = await _appHost.GetLocalApiUrl(CancellationToken.None).ConfigureAwait(false); - Uri uri; - if (Uri.TryCreate(localAddressString, UriKind.Absolute, out uri)) + if (Uri.TryCreate(localAddressString, UriKind.Absolute, out var uri)) { localAddressString = uri.Host; diff --git a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs index a5c9072132..7a8b09cf78 100644 --- a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs @@ -1,21 +1,20 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Controller.Session; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Threading; using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { @@ -90,8 +89,7 @@ namespace Emby.Server.Implementations.EntryPoints var progress = e.Argument.Item2; - DateTime lastMessageSendTime; - if (_lastProgressMessageTimes.TryGetValue(item.Id, out lastMessageSendTime)) + if (_lastProgressMessageTimes.TryGetValue(item.Id, out var lastMessageSendTime)) { if (progress > 0 && progress < 100 && (DateTime.UtcNow - lastMessageSendTime).TotalMilliseconds < 1000) { diff --git a/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs b/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs index c7bd03960d..e37ea96a12 100644 --- a/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs @@ -58,7 +58,7 @@ namespace Emby.Server.Implementations.EntryPoints try { - await _sessionManager.SendMessageToUserSessions(users, name, info, CancellationToken.None); + await _sessionManager.SendMessageToUserSessions(users, name, info, CancellationToken.None); } catch (ObjectDisposedException) { diff --git a/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs b/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs index f0b834ccb4..b7565adec4 100644 --- a/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs +++ b/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs @@ -1,12 +1,12 @@ -using System; -using MediaBrowser.Controller.Library; -using System.Threading; -using MediaBrowser.Model.Tasks; +using System; using System.Collections.Generic; using System.Linq; +using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; +using MediaBrowser.Model.Tasks; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints diff --git a/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs b/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs index 72dcabab38..92ea3a8f4a 100644 --- a/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs @@ -1,17 +1,14 @@ -using MediaBrowser.Common.Plugins; +using System; +using System.Collections.Generic; +using System.Threading; +using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Updates; using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; -using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Events; -using MediaBrowser.Model.Sync; -using System; -using System.Collections.Generic; -using System.Threading; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.EntryPoints diff --git a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs index ffd98bf787..05c8b07ab5 100644 --- a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs +++ b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs @@ -1,8 +1,8 @@ -using Emby.Server.Implementations.Browser; +using Emby.Server.Implementations.Browser; using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Plugins; using Microsoft.Extensions.Logging; -using MediaBrowser.Controller.Configuration; namespace Emby.Server.Implementations.EntryPoints { diff --git a/Emby.Server.Implementations/EntryPoints/SystemEvents.cs b/Emby.Server.Implementations/EntryPoints/SystemEvents.cs index e27de89673..72c8acd9f0 100644 --- a/Emby.Server.Implementations/EntryPoints/SystemEvents.cs +++ b/Emby.Server.Implementations/EntryPoints/SystemEvents.cs @@ -1,12 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using MediaBrowser.Model.System; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Common; +using System; using MediaBrowser.Controller; +using MediaBrowser.Controller.Plugins; +using MediaBrowser.Model.System; namespace Emby.Server.Implementations.EntryPoints { diff --git a/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs b/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs index 730ced0554..2c8246d13b 100644 --- a/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs +++ b/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs @@ -1,10 +1,10 @@ -using System; +using System; +using Emby.Server.Implementations.Udp; using MediaBrowser.Controller; using MediaBrowser.Controller.Plugins; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; -using Emby.Server.Implementations.Udp; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { diff --git a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs index 58309ea1c7..9e71ffceb7 100644 --- a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs @@ -1,17 +1,17 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Controller.Session; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Session; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Plugins; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Session; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.EntryPoints { @@ -62,9 +62,7 @@ namespace Emby.Server.Implementations.EntryPoints UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } - List keys; - - if (!_changedItems.TryGetValue(e.UserId, out keys)) + if (!_changedItems.TryGetValue(e.UserId, out List keys)) { keys = new List(); _changedItems[e.UserId] = keys; diff --git a/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs index 24a3456c45..c8104150d6 100644 --- a/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs +++ b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs @@ -1,6 +1,6 @@ -using System; -using MediaBrowser.Model.System; +using System; using System.Runtime.InteropServices; +using MediaBrowser.Model.System; namespace Emby.Server.Implementations.EnvironmentInfo { diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs b/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs index e725d22f51..60cd7b3d72 100644 --- a/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs +++ b/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs @@ -1,4 +1,4 @@ -namespace Emby.Server.Implementations.FFMpeg +namespace Emby.Server.Implementations.FFMpeg { /// /// Class FFMpegInfo @@ -21,4 +21,4 @@ /// The version. public string Version { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs b/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs index a1080a839a..fa9cb5e01b 100644 --- a/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs +++ b/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs @@ -1,4 +1,3 @@ - namespace Emby.Server.Implementations.FFMpeg { public class FFMpegInstallInfo @@ -15,4 +14,4 @@ namespace Emby.Server.Implementations.FFMpeg FFProbeFilename = "ffprobe"; } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs index 83e3cb7206..9a4aec958c 100644 --- a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs +++ b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Net; -using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; +using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.FFMpeg { diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs index 21cec9d2be..f747b01b93 100644 --- a/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs +++ b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net.Http; namespace Emby.Server.Implementations.HttpClientManager diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs index 2f5eed547d..3aab10026f 100644 --- a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs +++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs @@ -13,8 +13,8 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Net; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpClientManager { @@ -82,7 +82,7 @@ namespace Emby.Server.Implementations.HttpClientManager /// The host. /// if set to true [enable HTTP compression]. /// HttpClient. - /// host + /// host private HttpClientInfo GetHttpClient(string host, bool enableHttpCompression) { if (string.IsNullOrEmpty(host)) @@ -90,11 +90,9 @@ namespace Emby.Server.Implementations.HttpClientManager throw new ArgumentNullException(nameof(host)); } - HttpClientInfo client; - var key = host + enableHttpCompression; - if (!_httpClients.TryGetValue(key, out client)) + if (!_httpClients.TryGetValue(key, out var client)) { client = new HttpClientInfo(); @@ -125,7 +123,7 @@ namespace Emby.Server.Implementations.HttpClientManager { string url = options.Url; - Uri uriAddress = new Uri(url); + var uriAddress = new Uri(url); string userInfo = uriAddress.UserInfo; if (!string.IsNullOrWhiteSpace(userInfo)) { @@ -133,7 +131,7 @@ namespace Emby.Server.Implementations.HttpClientManager url = url.Replace(userInfo + "@", string.Empty); } - WebRequest request = CreateWebRequest(url); + var request = CreateWebRequest(url); if (request is HttpWebRequest httpWebRequest) { @@ -188,7 +186,7 @@ namespace Emby.Server.Implementations.HttpClientManager private static CredentialCache GetCredential(string url, string username, string password) { //ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; - CredentialCache credentialCache = new CredentialCache(); + var credentialCache = new CredentialCache(); credentialCache.Add(new Uri(url), "Basic", new NetworkCredential(username, password)); return credentialCache; } @@ -541,7 +539,7 @@ namespace Emby.Server.Implementations.HttpClientManager if (options.Progress == null) { - throw new ArgumentException("Options did not have a Progress value.",nameof(options)); + throw new ArgumentException("Options did not have a Progress value.", nameof(options)); } options.CancellationToken.ThrowIfCancellationRequested(); @@ -807,7 +805,7 @@ namespace Emby.Server.Implementations.HttpClientManager { var taskCompletion = new TaskCompletionSource(); - Task asyncTask = Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); + var asyncTask = Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null); ThreadPool.RegisterWaitForSingleObject((asyncTask as IAsyncResult).AsyncWaitHandle, TimeoutCallback, request, timeout, true); var callback = new TaskCallback { taskCompletion = taskCompletion }; @@ -823,7 +821,7 @@ namespace Emby.Server.Implementations.HttpClientManager { if (timedOut && state != null) { - WebRequest request = (WebRequest)state; + var request = (WebRequest)state; request.Abort(); } } diff --git a/Emby.Server.Implementations/HttpServer/FileWriter.cs b/Emby.Server.Implementations/HttpServer/FileWriter.cs index 5684329022..c32c91670a 100644 --- a/Emby.Server.Implementations/HttpServer/FileWriter.cs +++ b/Emby.Server.Implementations/HttpServer/FileWriter.cs @@ -1,13 +1,13 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Services; -using System.Linq; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs index 6b4f2bced5..033ffd4c02 100644 --- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -116,8 +116,7 @@ namespace Emby.Server.Implementations.HttpServer public Type GetServiceTypeByRequest(Type requestType) { - Type serviceType; - ServiceOperationsMap.TryGetValue(requestType, out serviceType); + ServiceOperationsMap.TryGetValue(requestType, out var serviceType); return serviceType; } @@ -199,13 +198,13 @@ namespace Emby.Server.Implementations.HttpServer { switch (ex) { - case ArgumentException _: return 400; - case SecurityException _: return 401; + case ArgumentException _: return 400; + case SecurityException _: return 401; case DirectoryNotFoundException _: case FileNotFoundException _: - case ResourceNotFoundException _: return 404; + case ResourceNotFoundException _: return 404; case RemoteServiceUnavailableException _: return 502; - default: return 500; + default: return 500; } } @@ -673,8 +672,7 @@ namespace Emby.Server.Implementations.HttpServer return null; } - string contentType; - var restPath = ServiceHandler.FindMatchingRestPath(httpReq.HttpMethod, pathInfo, out contentType); + var restPath = ServiceHandler.FindMatchingRestPath(httpReq.HttpMethod, pathInfo, out string contentType); if (restPath != null) { diff --git a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs index bacf5556f0..8b60d61d41 100644 --- a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs +++ b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs @@ -1,7 +1,3 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Net; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Globalization; @@ -13,8 +9,12 @@ using System.Text; using System.Threading.Tasks; using System.Xml; using Emby.Server.Implementations.Services; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.IO; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; using IRequest = MediaBrowser.Model.Services.IRequest; using MimeTypes = MediaBrowser.Model.Net.MimeTypes; @@ -96,8 +96,7 @@ namespace Emby.Server.Implementations.HttpServer responseHeaders = new Dictionary(); } - string expires; - if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires)) + if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires)) { responseHeaders["Expires"] = "-1"; } @@ -115,7 +114,8 @@ namespace Emby.Server.Implementations.HttpServer string compressionType = null; bool isHeadRequest = false; - if (requestContext != null) { + if (requestContext != null) + { compressionType = GetCompressionType(requestContext, content, contentType); isHeadRequest = string.Equals(requestContext.Verb, "head", StringComparison.OrdinalIgnoreCase); } @@ -142,8 +142,7 @@ namespace Emby.Server.Implementations.HttpServer responseHeaders = new Dictionary(); } - string expires; - if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires)) + if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires)) { responseHeaders["Expires"] = "-1"; } @@ -187,8 +186,7 @@ namespace Emby.Server.Implementations.HttpServer responseHeaders = new Dictionary(); } - string expires; - if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires)) + if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires)) { responseHeaders["Expires"] = "-1"; } @@ -716,7 +714,7 @@ namespace Emby.Server.Implementations.HttpServer { ifNoneMatchHeader = (ifNoneMatchHeader ?? string.Empty).Trim('\"'); - if (Guid.TryParse(ifNoneMatchHeader, out Guid ifNoneMatch) + if (Guid.TryParse(ifNoneMatchHeader, out var ifNoneMatch) && cacheKey.Equals(ifNoneMatch)) { return true; diff --git a/Emby.Server.Implementations/HttpServer/IHttpListener.cs b/Emby.Server.Implementations/HttpServer/IHttpListener.cs index d50d7df6b9..8350913610 100644 --- a/Emby.Server.Implementations/HttpServer/IHttpListener.cs +++ b/Emby.Server.Implementations/HttpServer/IHttpListener.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller.Net; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Services; using Emby.Server.Implementations.Net; +using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Services; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/LoggerUtils.cs b/Emby.Server.Implementations/HttpServer/LoggerUtils.cs index 5b7bbe79cb..d22d9db265 100644 --- a/Emby.Server.Implementations/HttpServer/LoggerUtils.cs +++ b/Emby.Server.Implementations/HttpServer/LoggerUtils.cs @@ -1,7 +1,7 @@ -using Microsoft.Extensions.Logging; using System; using System.Globalization; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs b/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs index ef47a7ca97..891a76ec2a 100644 --- a/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs +++ b/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs @@ -1,4 +1,3 @@ -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Globalization; @@ -7,6 +6,7 @@ using System.Net; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/ResponseFilter.cs b/Emby.Server.Implementations/HttpServer/ResponseFilter.cs index afaee59f39..da2bf983a0 100644 --- a/Emby.Server.Implementations/HttpServer/ResponseFilter.cs +++ b/Emby.Server.Implementations/HttpServer/ResponseFilter.cs @@ -1,8 +1,8 @@ -using Microsoft.Extensions.Logging; using System; using System.Globalization; using System.Text; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/Security/AuthService.cs b/Emby.Server.Implementations/HttpServer/Security/AuthService.cs index fb5bfa601a..499a334fc9 100644 --- a/Emby.Server.Implementations/HttpServer/Security/AuthService.cs +++ b/Emby.Server.Implementations/HttpServer/Security/AuthService.cs @@ -1,15 +1,13 @@ +using System; +using System.Linq; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Connect; -using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Session; -using System; -using System.Linq; using MediaBrowser.Model.Services; -using MediaBrowser.Common.Net; namespace Emby.Server.Implementations.HttpServer.Security { @@ -209,8 +207,7 @@ namespace Emby.Server.Implementations.HttpServer.Security private static AuthenticationInfo GetTokenInfo(IRequest request) { - object info; - request.Items.TryGetValue("OriginalAuthenticationInfo", out info); + request.Items.TryGetValue("OriginalAuthenticationInfo", out var info); return info as AuthenticationInfo; } diff --git a/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs b/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs index f561c3d60f..cab41e65b9 100644 --- a/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs +++ b/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs @@ -1,12 +1,10 @@ -using MediaBrowser.Controller.Connect; -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Security; using System; using System.Collections.Generic; -using MediaBrowser.Model.Services; using System.Linq; -using System.Threading; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Security; +using MediaBrowser.Model.Services; namespace Emby.Server.Implementations.HttpServer.Security { @@ -28,8 +26,7 @@ namespace Emby.Server.Implementations.HttpServer.Security public AuthorizationInfo GetAuthorizationInfo(IRequest requestContext) { - object cached; - if (requestContext.Items.TryGetValue("AuthorizationInfo", out cached)) + if (requestContext.Items.TryGetValue("AuthorizationInfo", out var cached)) { return (AuthorizationInfo)cached; } diff --git a/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs b/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs index a919ce0083..81e11d3122 100644 --- a/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs +++ b/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs @@ -1,11 +1,10 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Session; -using System.Threading.Tasks; using MediaBrowser.Model.Services; -using System; namespace Emby.Server.Implementations.HttpServer.Security { @@ -32,8 +31,7 @@ namespace Emby.Server.Implementations.HttpServer.Security private AuthenticationInfo GetTokenInfo(IRequest request) { - object info; - request.Items.TryGetValue("OriginalAuthenticationInfo", out info); + request.Items.TryGetValue("OriginalAuthenticationInfo", out var info); return info as AuthenticationInfo; } diff --git a/Emby.Server.Implementations/HttpServer/StreamWriter.cs b/Emby.Server.Implementations/HttpServer/StreamWriter.cs index df0d746852..3269d44cf6 100644 --- a/Emby.Server.Implementations/HttpServer/StreamWriter.cs +++ b/Emby.Server.Implementations/HttpServer/StreamWriter.cs @@ -1,12 +1,11 @@ -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Threading; using System.Threading.Tasks; - using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { diff --git a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs index 5426114f6f..b9146d0076 100644 --- a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs +++ b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs @@ -1,15 +1,15 @@ -using System.Text; -using MediaBrowser.Controller.Net; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Serialization; using System; +using System.Net.WebSockets; +using System.Text; using System.Threading; using System.Threading.Tasks; +using Emby.Server.Implementations.Net; +using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Services; using MediaBrowser.Model.Text; -using System.Net.WebSockets; -using Emby.Server.Implementations.Net; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.HttpServer { @@ -77,7 +77,7 @@ namespace Emby.Server.Implementations.HttpServer /// The remote end point. /// The json serializer. /// The logger. - /// socket + /// socket public WebSocketConnection(IWebSocket socket, string remoteEndPoint, IJsonSerializer jsonSerializer, ILogger logger, ITextEncoding textEncoding) { if (socket == null) @@ -215,7 +215,7 @@ namespace Emby.Server.Implementations.HttpServer /// The message. /// The cancellation token. /// Task. - /// message + /// message public Task SendAsync(WebSocketMessage message, CancellationToken cancellationToken) { if (message == null) diff --git a/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs b/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs index 6b08c26c9b..48b34a3a04 100644 --- a/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs +++ b/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace Emby.Server.Implementations.IO { public class ExtendedFileSystemInfo diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs index c2def33db9..6bee178ea8 100644 --- a/Emby.Server.Implementations/IO/FileRefresher.cs +++ b/Emby.Server.Implementations/IO/FileRefresher.cs @@ -1,16 +1,16 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; -using MediaBrowser.Model.IO; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.IO; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.IO { diff --git a/Emby.Server.Implementations/IO/IsoManager.cs b/Emby.Server.Implementations/IO/IsoManager.cs index e0cf328681..f0a15097c9 100644 --- a/Emby.Server.Implementations/IO/IsoManager.cs +++ b/Emby.Server.Implementations/IO/IsoManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -23,8 +23,8 @@ namespace Emby.Server.Implementations.IO /// The iso path. /// The cancellation token. /// IsoMount. - /// isoPath - /// + /// isoPath + /// public Task Mount(string isoPath, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(isoPath)) diff --git a/Emby.Server.Implementations/IO/LibraryMonitor.cs b/Emby.Server.Implementations/IO/LibraryMonitor.cs index 9a224bd0e3..6a32040110 100644 --- a/Emby.Server.Implementations/IO/LibraryMonitor.cs +++ b/Emby.Server.Implementations/IO/LibraryMonitor.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; @@ -9,10 +9,10 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.IO { @@ -103,8 +103,7 @@ namespace Emby.Server.Implementations.IO // But if we make this delay too high, we risk missing legitimate changes, such as user adding a new file, or hand-editing metadata await Task.Delay(45000).ConfigureAwait(false); - string val; - _tempIgnoredPaths.TryRemove(path, out val); + _tempIgnoredPaths.TryRemove(path, out var val); if (refreshPath) { @@ -263,7 +262,7 @@ namespace Emby.Server.Implementations.IO /// The LST. /// The path. /// true if [contains parent folder] [the specified LST]; otherwise, false. - /// path + /// path private static bool ContainsParentFolder(IEnumerable lst, string path) { if (string.IsNullOrEmpty(path)) @@ -365,9 +364,7 @@ namespace Emby.Server.Implementations.IO /// The path. private void StopWatchingPath(string path) { - FileSystemWatcher watcher; - - if (_fileSystemWatchers.TryGetValue(path, out watcher)) + if (_fileSystemWatchers.TryGetValue(path, out var watcher)) { DisposeWatcher(watcher, true); } @@ -424,9 +421,7 @@ namespace Emby.Server.Implementations.IO /// The watcher. private void RemoveWatcherFromList(FileSystemWatcher watcher) { - FileSystemWatcher removed; - - _fileSystemWatchers.TryRemove(watcher.Path, out removed); + _fileSystemWatchers.TryRemove(watcher.Path, out var removed); } /// diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs index bee96c785d..ae14701908 100644 --- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs +++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs @@ -5,8 +5,8 @@ using System.IO; using System.Linq; using System.Text; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.IO { @@ -101,7 +101,7 @@ namespace Emby.Server.Implementations.IO /// /// The filename. /// true if the specified filename is shortcut; otherwise, false. - /// filename + /// filename public virtual bool IsShortcut(string filename) { if (string.IsNullOrEmpty(filename)) @@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.IO /// /// The filename. /// System.String. - /// filename + /// filename public virtual string ResolveShortcut(string filename) { if (string.IsNullOrEmpty(filename)) @@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.IO /// /// The shortcut path. /// The target. - /// + /// /// shortcutPath /// or /// target @@ -344,7 +344,7 @@ namespace Emby.Server.Implementations.IO /// /// The filename. /// System.String. - /// filename + /// filename public string GetValidFilename(string filename) { var builder = new StringBuilder(filename); @@ -526,7 +526,7 @@ namespace Emby.Server.Implementations.IO } else { - FileAttributes attributes = File.GetAttributes(path); + var attributes = File.GetAttributes(path); attributes = RemoveAttribute(attributes, FileAttributes.Hidden); File.SetAttributes(path, attributes); } @@ -550,7 +550,7 @@ namespace Emby.Server.Implementations.IO } else { - FileAttributes attributes = File.GetAttributes(path); + var attributes = File.GetAttributes(path); attributes = RemoveAttribute(attributes, FileAttributes.ReadOnly); File.SetAttributes(path, attributes); } diff --git a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs b/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs index 8ac662f78e..a306f94b36 100644 --- a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs +++ b/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs @@ -1,7 +1,5 @@ -using System; +using System; using System.IO; - -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.IO diff --git a/Emby.Server.Implementations/IO/StreamHelper.cs b/Emby.Server.Implementations/IO/StreamHelper.cs index e918176111..09cf4d4a3e 100644 --- a/Emby.Server.Implementations/IO/StreamHelper.cs +++ b/Emby.Server.Implementations/IO/StreamHelper.cs @@ -1,6 +1,6 @@ -using System.IO; -using System.Threading; using System; +using System.IO; +using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; diff --git a/Emby.Server.Implementations/IO/ThrottledStream.cs b/Emby.Server.Implementations/IO/ThrottledStream.cs index 3635ee1db7..81e8abc983 100644 --- a/Emby.Server.Implementations/IO/ThrottledStream.cs +++ b/Emby.Server.Implementations/IO/ThrottledStream.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -264,7 +264,7 @@ namespace Emby.Server.Implementations.IO { if (!ThrottleCheck(bufferSizeInBytes)) { - return ; + return; } _byteCount += bufferSizeInBytes; @@ -352,4 +352,4 @@ namespace Emby.Server.Implementations.IO } #endregion } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs index 964e389620..b99b98157d 100644 --- a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs +++ b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs @@ -1,22 +1,18 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Playlists; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; - -using MediaBrowser.Model.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.Configuration; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Net; namespace Emby.Server.Implementations.Images diff --git a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs index 7fb979d66a..c0a126b84e 100644 --- a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs +++ b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs @@ -1,13 +1,10 @@ -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; using System; using System.Collections.Generic; -using System.IO; using System.Linq; - -using MediaBrowser.Controller.IO; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; diff --git a/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs b/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs index 775b5d283c..4013ac0c80 100644 --- a/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs +++ b/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System; using System.Text; using System.Threading.Tasks; using MediaBrowser.Controller.Authentication; diff --git a/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs b/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs index 186ec63dac..45a33a2969 100644 --- a/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs +++ b/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs @@ -1,8 +1,8 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Dto; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Dto; namespace Emby.Server.Implementations.Library { diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index d901381cd4..073005a1eb 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1,52 +1,48 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Net; +using System.Threading; +using System.Threading.Tasks; +using Emby.Naming.Audio; +using Emby.Naming.Common; +using Emby.Naming.TV; +using Emby.Naming.Video; +using Emby.Server.Implementations.Library.Resolvers; +using Emby.Server.Implementations.Library.Validators; +using Emby.Server.Implementations.Playlists; +using Emby.Server.Implementations.ScheduledTasks; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Progress; +using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Querying; -using Emby.Naming.Audio; -using Emby.Naming.Common; -using Emby.Naming.TV; -using Emby.Naming.Video; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Net; -using System.Threading; -using System.Threading.Tasks; -using Emby.Server.Implementations.Library.Resolvers; -using Emby.Server.Implementations.Library.Validators; -using Emby.Server.Implementations.ScheduledTasks; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Channels; -using MediaBrowser.Model.Channels; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Library; using MediaBrowser.Model.Net; -using SortOrder = MediaBrowser.Model.Entities.SortOrder; -using VideoResolver = Emby.Naming.Video.VideoResolver; -using MediaBrowser.Common.Configuration; - -using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Tasks; -using Emby.Server.Implementations.Playlists; using MediaBrowser.Providers.MediaInfo; -using MediaBrowser.Controller; +using Microsoft.Extensions.Logging; +using SortOrder = MediaBrowser.Model.Entities.SortOrder; +using VideoResolver = Emby.Naming.Video.VideoResolver; namespace Emby.Server.Implementations.Library { @@ -391,7 +387,7 @@ namespace Emby.Server.Implementations.Library { try { - _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName); + _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName); if (fileSystemInfo.IsDirectory) { _fileSystem.DeleteDirectory(fileSystemInfo.FullName, true); @@ -436,8 +432,7 @@ namespace Emby.Server.Implementations.Library ItemRepository.DeleteItem(child.Id, CancellationToken.None); } - BaseItem removed; - _libraryItemsCache.TryRemove(item.Id, out removed); + _libraryItemsCache.TryRemove(item.Id, out BaseItem removed); ReportItemRemoved(item, parent); } @@ -715,14 +710,14 @@ namespace Emby.Server.Implementations.Library /// Creates the root media folder /// /// AggregateFolder. - /// Cannot create the root folder until plugins have loaded + /// Cannot create the root folder until plugins have loaded public AggregateFolder CreateRootFolder() { var rootFolderPath = ConfigurationManager.ApplicationPaths.RootFolderPath; _fileSystem.CreateDirectory(rootFolderPath); - var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy(); + var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy(); // In case program data folder was moved if (!string.Equals(rootFolder.Path, rootFolderPath, StringComparison.Ordinal)) @@ -791,7 +786,7 @@ namespace Emby.Server.Implementations.Library if (tmpItem == null) { - tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy(); + tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy(); } // In case program data folder was moved @@ -909,12 +904,12 @@ namespace Emby.Server.Implementations.Library /// /// The value. /// Task{Year}. - /// + /// public Year GetYear(int value) { if (value <= 0) { - throw new ArgumentOutOfRangeException(nameof(value),"Years less than or equal to 0 are invalid."); + throw new ArgumentOutOfRangeException(nameof(value), "Years less than or equal to 0 are invalid."); } var name = value.ToString(CultureInfo.InvariantCulture); @@ -1237,7 +1232,7 @@ namespace Emby.Server.Implementations.Library /// /// The id. /// BaseItem. - /// id + /// id public BaseItem GetItemById(Guid id) { if (id.Equals(Guid.Empty)) @@ -1245,9 +1240,7 @@ namespace Emby.Server.Implementations.Library throw new ArgumentNullException(nameof(id)); } - BaseItem item; - - if (LibraryItemsCache.TryGetValue(id, out item)) + if (LibraryItemsCache.TryGetValue(id, out BaseItem item)) { return item; } @@ -2079,7 +2072,7 @@ namespace Emby.Server.Implementations.Library public string GetConfiguredContentType(BaseItem item, bool inheritConfiguredPath) { - ICollectionFolder collectionFolder = item as ICollectionFolder; + var collectionFolder = item as ICollectionFolder; if (collectionFolder != null) { return collectionFolder.CollectionType; @@ -2375,7 +2368,7 @@ namespace Emby.Server.Implementations.Library string videoPath, string[] files) { - new SubtitleResolver(BaseItem.LocalizationManager, _fileSystem).AddExternalSubtitleStreams(streams, videoPath, streams.Count, files); + new SubtitleResolver(BaseItem.LocalizationManager, _fileSystem).AddExternalSubtitleStreams(streams, videoPath, streams.Count, files); } public bool IsVideoFile(string path, LibraryOptions libraryOptions) @@ -2421,11 +2414,11 @@ namespace Emby.Server.Implementations.Library var episodeInfo = episode.IsFileProtocol ? resolver.Resolve(episode.Path, isFolder, null, null, isAbsoluteNaming) : - new Emby.Naming.TV.EpisodeInfo(); + new Naming.TV.EpisodeInfo(); if (episodeInfo == null) { - episodeInfo = new Emby.Naming.TV.EpisodeInfo(); + episodeInfo = new Naming.TV.EpisodeInfo(); } var changed = false; @@ -2589,7 +2582,7 @@ namespace Emby.Server.Implementations.Library video.ParentId = Guid.Empty; video.OwnerId = owner.Id; video.ExtraType = ExtraType.Trailer; - video.TrailerTypes = new [] { TrailerType.LocalTrailer }; + video.TrailerTypes = new[] { TrailerType.LocalTrailer }; return video; diff --git a/Emby.Server.Implementations/Library/LiveStreamHelper.cs b/Emby.Server.Implementations/Library/LiveStreamHelper.cs index d0b3152ba7..c3082a78a7 100644 --- a/Emby.Server.Implementations/Library/LiveStreamHelper.cs +++ b/Emby.Server.Implementations/Library/LiveStreamHelper.cs @@ -1,19 +1,19 @@ -using System; +using System; +using System.Collections.Generic; using System.Globalization; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.MediaInfo; -using System.Collections.Generic; using MediaBrowser.Model.Serialization; -using MediaBrowser.Common.Configuration; -using System.IO; -using MediaBrowser.Common.Extensions; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library { diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs index 3578d87639..e0ecb2bcec 100644 --- a/Emby.Server.Implementations/Library/MediaSourceManager.cs +++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs @@ -1,28 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Globalization; -using System.IO; -using System.Globalization; -using MediaBrowser.Common.Configuration; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library { @@ -128,7 +127,7 @@ namespace Emby.Server.Implementations.Library if (allowMediaProbe && mediaSources[0].Type != MediaSourceType.Placeholder && !mediaSources[0].MediaStreams.Any(i => i.Type == MediaStreamType.Audio || i.Type == MediaStreamType.Video)) { - await item.RefreshMetadata(new MediaBrowser.Controller.Providers.MetadataRefreshOptions(new DirectoryService(_logger, _fileSystem)) + await item.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(_logger, _fileSystem)) { EnableRemoteContentProbe = true, MetadataRefreshMode = MediaBrowser.Controller.Providers.MetadataRefreshMode.FullRefresh @@ -778,8 +777,7 @@ namespace Emby.Server.Implementations.Library try { - ILiveStream info; - if (_openStreams.TryGetValue(id, out info)) + if (_openStreams.TryGetValue(id, out ILiveStream info)) { return info; } @@ -811,9 +809,7 @@ namespace Emby.Server.Implementations.Library try { - ILiveStream liveStream; - - if (_openStreams.TryGetValue(id, out liveStream)) + if (_openStreams.TryGetValue(id, out ILiveStream liveStream)) { liveStream.ConsumerCount--; diff --git a/Emby.Server.Implementations/Library/MediaStreamSelector.cs b/Emby.Server.Implementations/Library/MediaStreamSelector.cs index 5d4c5a452a..0a6c8845d1 100644 --- a/Emby.Server.Implementations/Library/MediaStreamSelector.cs +++ b/Emby.Server.Implementations/Library/MediaStreamSelector.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.Linq; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; namespace Emby.Server.Implementations.Library { @@ -171,7 +171,7 @@ namespace Emby.Server.Implementations.Library private static int FindIndex(string[] list, string value) { - for (var i=0; i< list.Length; i++) + for (var i = 0; i < list.Length; i++) { if (string.Equals(list[i], value, StringComparison.OrdinalIgnoreCase)) { diff --git a/Emby.Server.Implementations/Library/MusicManager.cs b/Emby.Server.Implementations/Library/MusicManager.cs index 1319ee6f4b..10602fea76 100644 --- a/Emby.Server.Implementations/Library/MusicManager.cs +++ b/Emby.Server.Implementations/Library/MusicManager.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Playlists; using System; using System.Collections.Generic; using System.Linq; using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; @@ -89,7 +89,7 @@ namespace Emby.Server.Implementations.Library Limit = 200, - OrderBy = new [] { new ValueTuple(ItemSortBy.Random, SortOrder.Ascending) }, + OrderBy = new[] { new ValueTuple(ItemSortBy.Random, SortOrder.Ascending) }, DtoOptions = dtoOptions diff --git a/Emby.Server.Implementations/Library/PathExtensions.cs b/Emby.Server.Implementations/Library/PathExtensions.cs index 2d3019d171..d3a81f6228 100644 --- a/Emby.Server.Implementations/Library/PathExtensions.cs +++ b/Emby.Server.Implementations/Library/PathExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text.RegularExpressions; namespace Emby.Server.Implementations.Library @@ -11,7 +11,7 @@ namespace Emby.Server.Implementations.Library /// The STR. /// The attrib. /// System.String. - /// attrib + /// attrib public static string GetAttributeValue(this string str, string attrib) { if (string.IsNullOrEmpty(str)) diff --git a/Emby.Server.Implementations/Library/ResolverHelper.cs b/Emby.Server.Implementations/Library/ResolverHelper.cs index 027d82c588..96d1bff92c 100644 --- a/Emby.Server.Implementations/Library/ResolverHelper.cs +++ b/Emby.Server.Implementations/Library/ResolverHelper.cs @@ -1,10 +1,9 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; using System; using System.IO; using System.Linq; -using System.Text.RegularExpressions; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Library @@ -22,7 +21,7 @@ namespace Emby.Server.Implementations.Library /// The file system. /// The library manager. /// The directory service. - /// Item must have a path + /// Item must have a path public static void SetInitialItemValues(BaseItem item, Folder parent, IFileSystem fileSystem, ILibraryManager libraryManager, IDirectoryService directoryService) { // This version of the below method has no ItemResolveArgs, so we have to require the path already being set @@ -104,7 +103,7 @@ namespace Emby.Server.Implementations.Library /// System.String. private static string GetDisplayName(string path, bool isDirectory) { - return isDirectory ? Path.GetFileName(path) : Path.GetFileNameWithoutExtension(path); + return isDirectory ? Path.GetFileName(path) : Path.GetFileNameWithoutExtension(path); } /// diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs index bac39122b3..baa665fce8 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs @@ -1,16 +1,14 @@ -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; -using MediaBrowser.Model.Entities; using System; -using MediaBrowser.Controller.Entities; +using System.Collections.Generic; using System.IO; using System.Linq; +using Emby.Naming.AudioBook; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; -using System.Collections.Generic; +using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; -using MediaBrowser.Model.Extensions; -using Emby.Naming.Video; -using Emby.Naming.AudioBook; namespace Emby.Server.Implementations.Library.Resolvers.Audio { diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs index da5fe48cda..3ce1da81a2 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs @@ -1,18 +1,14 @@ -using MediaBrowser.Controller.Entities.Audio; +using System; +using System.Collections.Generic; +using Emby.Naming.Audio; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using Emby.Naming.Audio; -using System; -using System.Collections.Generic; -using System.IO; - using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.Configuration; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers.Audio { diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs index b3a5c27c88..74e9b83049 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs @@ -1,15 +1,12 @@ -using MediaBrowser.Controller.Entities.Audio; +using System; +using System.Linq; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using System; -using System.IO; -using System.Linq; - using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers.Audio { diff --git a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs index b9ac2056fc..d992f8d030 100644 --- a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs @@ -1,13 +1,12 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Entities; -using Emby.Naming.Video; using System; using System.IO; using System.Linq; +using Emby.Naming.Video; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers { @@ -50,7 +49,7 @@ namespace Emby.Server.Implementations.Library.Resolvers var namingOptions = ((LibraryManager)LibraryManager).GetNamingOptions(); // If the path is a file check for a matching extensions - var parser = new Emby.Naming.Video.VideoResolver(namingOptions); + var parser = new VideoResolver(namingOptions); if (args.IsDirectory) { diff --git a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs index d7f80b3f41..f22554ee57 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using MediaBrowser.Controller.Entities; diff --git a/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs b/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs index 47e7f7344b..e48b6c9671 100644 --- a/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; diff --git a/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs b/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs index 529916619c..a6db407140 100644 --- a/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs index d3ab4dd377..922bd4bbb8 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs @@ -1,9 +1,9 @@ +using System; +using System.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; -using System; -using System.IO; using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Library.Resolvers.Movies diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 0a45317a4e..e48213dbb1 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -1,3 +1,9 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Emby.Naming.Video; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; @@ -6,15 +12,7 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Extensions; -using Emby.Naming.Video; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers.Movies { diff --git a/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs index a073e0bd5b..82779f8d3d 100644 --- a/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs @@ -1,11 +1,9 @@ -using MediaBrowser.Controller.Drawing; +using System; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; -using System; -using System.IO; -using System.Linq; namespace Emby.Server.Implementations.Library.Resolvers { diff --git a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs index e3cce5f4bd..78c1c6629f 100644 --- a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs @@ -1,11 +1,11 @@ -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Entities; using System; using System.IO; using System.Linq; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Library.Resolvers diff --git a/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs index e66c9f0870..c295894d3a 100644 --- a/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Playlists; using System; using System.IO; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Model.Entities; using System.Linq; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Library.Resolvers { diff --git a/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs b/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs index 5cf5cd3ad7..fa8c89e88d 100644 --- a/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs @@ -1,12 +1,10 @@ -using MediaBrowser.Controller; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; using System; using System.IO; using System.Linq; - -using MediaBrowser.Controller.IO; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Library.Resolvers diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs index 4e5ac959ca..fed0904d19 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs @@ -1,7 +1,7 @@ -using System; +using System; +using System.Linq; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; -using System.Linq; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs index 4bfedf3c62..ce1386e91a 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs @@ -1,10 +1,9 @@ using System.Globalization; +using Emby.Naming.TV; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Globalization; -using Emby.Naming.Common; -using Emby.Naming.TV; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers.TV @@ -64,7 +63,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV if (!season.IndexNumber.HasValue || !seasonParserResult.IsSeasonFolder) { - var resolver = new Emby.Naming.TV.EpisodeResolver(namingOptions); + var resolver = new Naming.TV.EpisodeResolver(namingOptions); var folderName = System.IO.Path.GetFileName(path); var testPath = "\\\\test\\" + folderName; diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs index 7d2865f0d8..16b5a2d3ae 100644 --- a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs @@ -1,20 +1,15 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Emby.Naming.TV; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; +using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using Emby.Naming.Common; -using Emby.Naming.TV; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.Configuration; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Resolvers.TV { @@ -156,7 +151,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV var namingOptions = ((LibraryManager)libraryManager).GetNamingOptions(); - var episodeResolver = new Emby.Naming.TV.EpisodeResolver(namingOptions); + var episodeResolver = new Naming.TV.EpisodeResolver(namingOptions); bool? isNamed = null; bool? isOptimistic = null; @@ -184,7 +179,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV /// /// The path. /// true if [is place holder] [the specified path]; otherwise, false. - /// path + /// path private static bool IsVideoPlaceHolder(string path) { if (string.IsNullOrEmpty(path)) diff --git a/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs index 030ff88f7d..60752a85db 100644 --- a/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs @@ -1,12 +1,11 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.Library.Resolvers { public class GenericVideoResolver : BaseVideoResolver - where T : Video, new () + where T : Video, new() { public GenericVideoResolver(ILibraryManager libraryManager, IFileSystem fileSystem) : base(libraryManager, fileSystem) { diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs index bbb1394395..71638b1978 100644 --- a/Emby.Server.Implementations/Library/SearchEngine.cs +++ b/Emby.Server.Implementations/Library/SearchEngine.cs @@ -1,17 +1,15 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Querying; -using MediaBrowser.Model.Search; using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Extensions; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Search; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library { @@ -78,7 +76,7 @@ namespace Emby.Server.Implementations.Library /// The query. /// The user. /// IEnumerable{SearchHintResult}. - /// searchTerm + /// searchTerm private List GetSearchHints(SearchQuery query, User user) { var searchTerm = query.SearchTerm; diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs index 3ca4b6b109..dfa1edaffd 100644 --- a/Emby.Server.Implementations/Library/UserDataManager.cs +++ b/Emby.Server.Implementations/Library/UserDataManager.cs @@ -1,16 +1,16 @@ -using MediaBrowser.Controller.Configuration; +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Globalization; +using System.Threading; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using Microsoft.Extensions.Logging; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Threading; -using MediaBrowser.Controller.Dto; -using System.Globalization; namespace Emby.Server.Implementations.Library { @@ -193,7 +193,7 @@ namespace Emby.Server.Implementations.Library /// /// The data. /// DtoUserItemData. - /// + /// private UserItemDataDto GetUserItemDataDto(UserItemData data) { if (data == null) diff --git a/Emby.Server.Implementations/Library/UserManager.cs b/Emby.Server.Implementations/Library/UserManager.cs index c059cbc75b..f06c713866 100644 --- a/Emby.Server.Implementations/Library/UserManager.cs +++ b/Emby.Server.Implementations/Library/UserManager.cs @@ -1,37 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; using MediaBrowser.Common.Events; using MediaBrowser.Common.Net; using MediaBrowser.Controller; +using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Security; +using MediaBrowser.Controller.Session; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Connect; +using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Users; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.Cryptography; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Authentication; -using MediaBrowser.Controller.Security; -using MediaBrowser.Controller.Devices; -using MediaBrowser.Controller.Session; -using MediaBrowser.Controller.Plugins; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library { @@ -158,7 +158,7 @@ namespace Emby.Server.Implementations.Library /// /// The id. /// User. - /// + /// public User GetUserById(Guid id) { if (id.Equals(Guid.Empty)) @@ -619,8 +619,8 @@ namespace Emby.Server.Implementations.Library /// The user. /// The new name. /// Task. - /// user - /// + /// user + /// public async Task RenameUser(User user, string newName) { if (user == null) @@ -652,8 +652,8 @@ namespace Emby.Server.Implementations.Library /// Updates the user. /// /// The user. - /// user - /// + /// user + /// public void UpdateUser(User user) { if (user == null) @@ -683,8 +683,8 @@ namespace Emby.Server.Implementations.Library /// /// The name. /// User. - /// name - /// + /// name + /// public async Task CreateUser(string name) { if (string.IsNullOrWhiteSpace(name)) @@ -731,8 +731,8 @@ namespace Emby.Server.Implementations.Library /// /// The user. /// Task. - /// user - /// + /// user + /// public async Task DeleteUser(User user) { if (user == null) diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs index d616e12095..9fa859bde3 100644 --- a/Emby.Server.Implementations/Library/UserViewManager.cs +++ b/Emby.Server.Implementations/Library/UserViewManager.cs @@ -1,21 +1,19 @@ -using MediaBrowser.Controller.Channels; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Library; using MediaBrowser.Model.Querying; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Library { @@ -242,7 +240,7 @@ namespace Emby.Server.Implementations.Library { return _channelManager.GetLatestChannelItemsInternal(new InternalItemsQuery(user) { - ChannelIds = new [] { parentId }, + ChannelIds = new[] { parentId }, IsPlayed = request.IsPlayed, StartIndex = request.StartIndex, Limit = request.Limit, diff --git a/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs index eee66c8ac5..27261d449d 100644 --- a/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs +++ b/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs b/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs index 278c0cc7ad..294348660f 100644 --- a/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs @@ -1,16 +1,12 @@ -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; -using System.Collections.Generic; -using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Extensions; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs index ea1f2e552e..2b067951d6 100644 --- a/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs +++ b/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs b/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs index 070777475c..f5ffa1e458 100644 --- a/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs @@ -1,11 +1,9 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs index 4f4133340c..0568073005 100644 --- a/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs +++ b/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Library; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using Microsoft.Extensions.Logging; diff --git a/Emby.Server.Implementations/Library/Validators/GenresValidator.cs b/Emby.Server.Implementations/Library/Validators/GenresValidator.cs index 775cde299b..f8459c61f1 100644 --- a/Emby.Server.Implementations/Library/Validators/GenresValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/GenresValidator.cs @@ -1,12 +1,9 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs index edc6f3ad6d..d7ab92d306 100644 --- a/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs +++ b/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs b/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs index b5ed1c0e6e..710e5d0433 100644 --- a/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs @@ -1,12 +1,9 @@ -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs b/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs index 50c7cfbc61..0ea543ba01 100644 --- a/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs @@ -1,12 +1,12 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; -using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs index 45747dda1c..4aa5c7e72a 100644 --- a/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs +++ b/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs index 1a5ebac54e..da4645a11d 100644 --- a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs +++ b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs @@ -1,11 +1,10 @@ -using MediaBrowser.Controller.Library; -using Microsoft.Extensions.Logging; using System; -using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Library.Validators { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs index 327b0181a6..7d7ef21e3a 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs @@ -1,13 +1,10 @@ -using System; -using System.IO; +using System; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; - using MediaBrowser.Common.Net; -using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index b787e8f0f9..64e5affd70 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -8,36 +8,36 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Xml; +using Emby.Server.Implementations.Library; using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; +using MediaBrowser.Common.Progress; +using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Diagnostics; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; +using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.MediaInfo; +using MediaBrowser.Model.Providers; +using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Reflection; using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.IO; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.Progress; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Diagnostics; using MediaBrowser.Model.System; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Model.Querying; -using MediaBrowser.Model.Reflection; -using MediaBrowser.Model.Providers; -using MediaBrowser.Model.MediaInfo; -using Emby.Server.Implementations.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV { @@ -395,8 +395,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV private async Task GetEpgChannels(IListingsProvider provider, ListingsProviderInfo info, bool enableCache, CancellationToken cancellationToken) { - EpgChannelData result; - if (!enableCache || !_epgChannels.TryGetValue(info.Id, out result)) + if (!enableCache || !_epgChannels.TryGetValue(info.Id, out var result)) { var channels = await provider.GetChannels(info, cancellationToken).ConfigureAwait(false); @@ -648,9 +647,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV TimerCancelled(this, new GenericEventArgs(timerId)); } } - ActiveRecordingInfo activeRecordingInfo; - if (_activeRecordings.TryGetValue(timerId, out activeRecordingInfo)) + if (_activeRecordings.TryGetValue(timerId, out var activeRecordingInfo)) { activeRecordingInfo.Timer = timer; activeRecordingInfo.CancellationTokenSource.Cancel(); @@ -817,8 +815,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV } // Only update if not currently active - ActiveRecordingInfo activeRecordingInfo; - if (!_activeRecordings.TryGetValue(updatedTimer.Id, out activeRecordingInfo)) + if (!_activeRecordings.TryGetValue(updatedTimer.Id, out var activeRecordingInfo)) { existingTimer.PrePaddingSeconds = updatedTimer.PrePaddingSeconds; existingTimer.PostPaddingSeconds = updatedTimer.PostPaddingSeconds; @@ -860,9 +857,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV public string GetActiveRecordingPath(string id) { - ActiveRecordingInfo info; - - if (_activeRecordings.TryGetValue(id, out info)) + if (_activeRecordings.TryGetValue(id, out var info)) { return info.Path; } @@ -1428,8 +1423,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV TriggerRefresh(recordPath); _libraryMonitor.ReportFileSystemChangeComplete(recordPath, false); - ActiveRecordingInfo removed; - _activeRecordings.TryRemove(timer.Id, out removed); + _activeRecordings.TryRemove(timer.Id, out var removed); if (recordingStatus != RecordingStatus.Completed && DateTime.UtcNow < timer.EndDate && timer.RetryCount < 10) { @@ -1990,11 +1984,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV CloseOutput = false }; - using (XmlWriter writer = XmlWriter.Create(stream, settings)) + using (var writer = XmlWriter.Create(stream, settings)) { writer.WriteStartDocument(true); writer.WriteStartElement("tvshow"); - string id; if (timer.SeriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id)) { @@ -2057,7 +2050,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV var isSeriesEpisode = timer.IsProgramSeries; - using (XmlWriter writer = XmlWriter.Create(stream, settings)) + using (var writer = XmlWriter.Create(stream, settings)) { writer.WriteStartDocument(true); @@ -2419,12 +2412,42 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV if (updateTimerSettings) { - existingTimer.KeepUntil = seriesTimer.KeepUntil; - existingTimer.IsPostPaddingRequired = seriesTimer.IsPostPaddingRequired; - existingTimer.IsPrePaddingRequired = seriesTimer.IsPrePaddingRequired; - existingTimer.PostPaddingSeconds = seriesTimer.PostPaddingSeconds; - existingTimer.PrePaddingSeconds = seriesTimer.PrePaddingSeconds; - existingTimer.Priority = seriesTimer.Priority; + // Only update if not currently active - test both new timer and existing in case Id's are different + // Id's could be different if the timer was created manually prior to series timer creation + if (!_activeRecordings.TryGetValue(timer.Id, out var activeRecordingInfo) && !_activeRecordings.TryGetValue(existingTimer.Id, out activeRecordingInfo)) + { + UpdateExistingTimerWithNewMetadata(existingTimer, timer); + + // Needed by ShouldCancelTimerForSeriesTimer + timer.IsManual = existingTimer.IsManual; + + if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer)) + { + existingTimer.Status = RecordingStatus.Cancelled; + } + else if (!existingTimer.IsManual) + { + existingTimer.Status = RecordingStatus.New; + } + + if (existingTimer.Status != RecordingStatus.Cancelled) + { + enabledTimersForSeries.Add(existingTimer); + } + + if (updateTimerSettings) + { + existingTimer.KeepUntil = seriesTimer.KeepUntil; + existingTimer.IsPostPaddingRequired = seriesTimer.IsPostPaddingRequired; + existingTimer.IsPrePaddingRequired = seriesTimer.IsPrePaddingRequired; + existingTimer.PostPaddingSeconds = seriesTimer.PostPaddingSeconds; + existingTimer.PrePaddingSeconds = seriesTimer.PrePaddingSeconds; + existingTimer.Priority = seriesTimer.Priority; + } + + existingTimer.SeriesTimerId = seriesTimer.Id; + _timerProvider.Update(existingTimer); + } } existingTimer.SeriesTimerId = seriesTimer.Id; @@ -2497,7 +2520,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV if (string.IsNullOrWhiteSpace(channelId) && !parent.ChannelId.Equals(Guid.Empty)) { - if (!tempChannelCache.TryGetValue(parent.ChannelId, out var channel)) + if (!tempChannelCache.TryGetValue(parent.ChannelId, out LiveTvChannel channel)) { channel = _libraryManager.GetItemList(new InternalItemsQuery { @@ -2556,7 +2579,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV if (!programInfo.ChannelId.Equals(Guid.Empty)) { - if (!tempChannelCache.TryGetValue(programInfo.ChannelId, out var channel)) + if (!tempChannelCache.TryGetValue(programInfo.ChannelId, out LiveTvChannel channel)) { channel = _libraryManager.GetItemList(new InternalItemsQuery { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs index 292f3621d1..c09ee93482 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs @@ -1,27 +1,25 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Diagnostics; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Library; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Reflection; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs index cc9e80a821..982a54b68d 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs @@ -1,4 +1,3 @@ -using System; using MediaBrowser.Controller.Plugins; namespace Emby.Server.Implementations.LiveTv.EmbyTV diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs index e639a312c0..6eced30509 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Library; diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs index 593f98881a..1b8287ed1b 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs @@ -1,12 +1,10 @@ -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Linq; - -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs index e694a82811..ded3c7607d 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Controller.LiveTv; using System; using System.Globalization; +using MediaBrowser.Controller.LiveTv; namespace Emby.Server.Implementations.LiveTv.EmbyTV { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs index 620ba76501..d2ad65a1e9 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.IO; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV { diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs index bdc6ae0093..7f67d70a96 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs @@ -4,11 +4,11 @@ using System.Globalization; using System.Linq; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using MediaBrowser.Model.IO; using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Threading; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.EmbyTV { @@ -140,8 +140,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV private void StopTimer(TimerInfo item) { - ITimer timer; - if (_timers.TryRemove(item.Id, out timer)) + if (_timers.TryRemove(item.Id, out var timer)) { timer.Dispose(); } diff --git a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs index 0ba8c8b42b..d3066e9161 100644 --- a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs +++ b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs @@ -1,22 +1,22 @@ -using System.Net; -using MediaBrowser.Common; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using System.Net; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Common; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.Listings { @@ -42,7 +42,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings private static List GetScheduleRequestDates(DateTime startDateUtc, DateTime endDateUtc) { - List dates = new List(); + var dates = new List(); var start = new List { startDateUtc, startDateUtc.ToLocalTime() }.Min().Date; var end = new List { endDateUtc, endDateUtc.ToLocalTime() }.Max().Date; @@ -104,7 +104,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings httpOptions.RequestHeaders["token"] = token; using (var response = await Post(httpOptions, true, info).ConfigureAwait(false)) - using (StreamReader reader = new StreamReader(response.Content)) + using (var reader = new StreamReader(response.Content)) { var dailySchedules = await _jsonSerializer.DeserializeFromStreamAsync>(response.Content).ConfigureAwait(false); _logger.LogDebug("Found {ScheduleCount} programs on {ChannelID} ScheduleDirect", dailySchedules.Count, channelId); @@ -125,7 +125,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings httpOptions.RequestContent = "[\"" + string.Join("\", \"", programsID) + "\"]"; using (var innerResponse = await Post(httpOptions, true, info).ConfigureAwait(false)) - using (StreamReader innerReader = new StreamReader(innerResponse.Content)) + using (var innerReader = new StreamReader(innerResponse.Content)) { var programDetails = await _jsonSerializer.DeserializeFromStreamAsync>(innerResponse.Content).ConfigureAwait(false); var programDict = programDetails.ToDictionary(p => p.programID, y => y); @@ -136,7 +136,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings var images = await GetImageForPrograms(info, programIdsWithImages, cancellationToken).ConfigureAwait(false); - List programsInfo = new List(); + var programsInfo = new List(); foreach (ScheduleDirect.Program schedule in dailySchedules.SelectMany(d => d.programs)) { //_logger.LogDebug("Proccesing Schedule for statio ID " + stationID + @@ -222,9 +222,9 @@ namespace Emby.Server.Implementations.LiveTv.Listings private ProgramInfo GetProgram(string channelId, ScheduleDirect.Program programInfo, ScheduleDirect.ProgramDetails details) { - DateTime startAt = GetDate(programInfo.airDateTime); - DateTime endAt = startAt.AddSeconds(programInfo.duration); - ProgramAudio audioType = ProgramAudio.Stereo; + var startAt = GetDate(programInfo.airDateTime); + var endAt = startAt.AddSeconds(programInfo.duration); + var audioType = ProgramAudio.Stereo; var programId = programInfo.programID ?? string.Empty; diff --git a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs index 2b1ee84a8a..e7a3d748d1 100644 --- a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs +++ b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs @@ -281,7 +281,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings string path = await GetXml(info.Path, cancellationToken).ConfigureAwait(false); _logger.LogDebug("Opening XmlTvReader for {path}", path); var reader = new XmlTvReader(path, GetLanguage(info)); - IEnumerable results = reader.GetChannels(); + var results = reader.GetChannels(); // Should this method be async? return results.Select(c => new ChannelInfo diff --git a/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs b/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs index 205a767eb8..f9b274acbd 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.LiveTv; using System.Collections.Generic; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.LiveTv; namespace Emby.Server.Implementations.LiveTv { diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs index 7397d4b60f..d0cde06431 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -1,21 +1,19 @@ +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; using MediaBrowser.Common; using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.LiveTv; using Microsoft.Extensions.Logging; -using System; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Extensions; -using System.Collections.Generic; namespace Emby.Server.Implementations.LiveTv { diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index c360a6a82d..11d7facbe3 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1,10 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Emby.Server.Implementations.Library; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Common.Progress; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; @@ -12,27 +23,15 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Querying; -using MediaBrowser.Model.Serialization; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Events; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.Querying; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Tasks; -using Emby.Server.Implementations.LiveTv.Listings; -using MediaBrowser.Controller.Channels; -using Emby.Server.Implementations.Library; -using MediaBrowser.Controller; -using MediaBrowser.Common.Net; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv { @@ -255,7 +254,7 @@ namespace Emby.Server.Implementations.LiveTv var channel = (LiveTvChannel)_libraryManager.GetItemById(id); bool isVideo = channel.ChannelType == ChannelType.TV; - ILiveTvService service = GetService(channel); + var service = GetService(channel); _logger.LogInformation("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId); MediaSourceInfo info; @@ -541,8 +540,7 @@ namespace Emby.Server.Implementations.LiveTv var isNew = false; var forceUpdate = false; - LiveTvProgram item; - if (!allExistingPrograms.TryGetValue(id, out item)) + if (!allExistingPrograms.TryGetValue(id, out LiveTvProgram item)) { isNew = true; item = new LiveTvProgram @@ -905,7 +903,7 @@ namespace Emby.Server.Implementations.LiveTv var programList = _libraryManager.QueryItems(internalQuery).Items; var totalCount = programList.Length; - IOrderedEnumerable orderedPrograms = programList.Cast().OrderBy(i => i.StartDate.Date); + var orderedPrograms = programList.Cast().OrderBy(i => i.StartDate.Date); if (query.IsAiring ?? false) { @@ -921,10 +919,10 @@ namespace Emby.Server.Implementations.LiveTv } return new QueryResult - { - Items = programs.ToArray(), - TotalRecordCount = totalCount - }; + { + Items = programs.ToArray(), + TotalRecordCount = totalCount + }; } public QueryResult GetRecommendedPrograms(InternalItemsQuery query, DtoOptions options, CancellationToken cancellationToken) @@ -939,10 +937,10 @@ namespace Emby.Server.Implementations.LiveTv var internalResult = GetRecommendedProgramsInternal(query, options, cancellationToken); return new QueryResult - { - Items = _dtoService.GetBaseItemDtos(internalResult.Items, options, query.User), - TotalRecordCount = internalResult.TotalRecordCount - }; + { + Items = _dtoService.GetBaseItemDtos(internalResult.Items, options, query.User), + TotalRecordCount = internalResult.TotalRecordCount + }; } private int GetRecommendationScore(LiveTvProgram program, User user, bool factorChannelWatchCount) @@ -1266,7 +1264,7 @@ namespace Emby.Server.Implementations.LiveTv } numComplete++; - double percent = numComplete / (double) allChannelsList.Count; + double percent = numComplete / (double)allChannelsList.Count; progress.Report(85 * percent + 15); } @@ -1311,7 +1309,7 @@ namespace Emby.Server.Implementations.LiveTv } numComplete++; - double percent = numComplete / (double) list.Count; + double percent = numComplete / (double)list.Count; progress.Report(100 * percent); } @@ -1953,8 +1951,7 @@ namespace Emby.Server.Implementations.LiveTv foreach (var programDto in currentProgramDtos) { - BaseItemDto channelDto; - if (currentChannelsDict.TryGetValue(programDto.ChannelId, out channelDto)) + if (currentChannelsDict.TryGetValue(programDto.ChannelId, out BaseItemDto channelDto)) { channelDto.CurrentProgram = programDto; } @@ -1967,7 +1964,7 @@ namespace Emby.Server.Implementations.LiveTv ILiveTvService service = null; ProgramInfo programInfo = null; - if(program != null) + if (program != null) { service = GetService(program); @@ -2307,7 +2304,7 @@ namespace Emby.Server.Implementations.LiveTv // ServerConfiguration.SaveConfiguration crashes during xml serialization for AddListingProvider info = _jsonSerializer.DeserializeFromString(_jsonSerializer.SerializeToString(info)); - IListingsProvider provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase)); + var provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase)); if (provider == null) { @@ -2320,7 +2317,7 @@ namespace Emby.Server.Implementations.LiveTv LiveTvOptions config = GetConfiguration(); - List list = config.ListingProviders.ToList(); + var list = config.ListingProviders.ToList(); int index = list.FindIndex(i => string.Equals(i.Id, info.Id, StringComparison.OrdinalIgnoreCase)); if (index == -1 || string.IsNullOrWhiteSpace(info.Id)) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index d13f08b1bb..cd1731de55 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -1,21 +1,18 @@ -using MediaBrowser.Controller; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Dto; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Common.Configuration; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv { diff --git a/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs index 29196a0686..542951de4a 100644 --- a/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs +++ b/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs @@ -1,10 +1,9 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Model.LiveTv; using System; using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.LiveTv diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs index 78514c1d94..ee86f66e69 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs @@ -1,8 +1,3 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -10,13 +5,16 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.IO; +using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Serialization; -using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts { diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index 3ae47f3abe..e8e4bc7238 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -1,27 +1,27 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; -using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun { @@ -118,8 +118,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun { if (!string.IsNullOrEmpty(cacheKey)) { - DiscoverResponse response; - if (_modelCache.TryGetValue(cacheKey, out response)) + if (_modelCache.TryGetValue(cacheKey, out DiscoverResponse response)) { return response; } @@ -260,9 +259,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun for (int i = 0; i < model.TunerCount; ++i) { var name = string.Format("Tuner {0}", i + 1); - var currentChannel = "none"; /// @todo Get current channel and map back to Station Id + var currentChannel = "none"; /// @todo Get current channel and map back to Station Id var isAvailable = await manager.CheckTunerAvailability(ipInfo, i, cancellationToken).ConfigureAwait(false); - LiveTvTunerStatus status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv; + var status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv; tuners.Add(new LiveTvTunerInfo { Name = name, diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs index 335fc4cb48..2205c0ecca 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs @@ -1,14 +1,13 @@ -using System; +using System; using System.Collections.Generic; -using System.Linq; +using System.Net; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Net; using Microsoft.Extensions.Logging; -using MediaBrowser.Controller.LiveTv; -using System.Net; namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun { @@ -133,8 +132,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun var receiveBuffer = new byte[8192]; var response = await socket.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); - string returnVal; - ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal); + ParseReturnMessage(response.Buffer, response.ReceivedBytes, out string returnVal); return string.Equals(returnVal, "none", StringComparison.OrdinalIgnoreCase); } @@ -168,9 +166,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null); await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false); var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); - string returnVal; // parse response to make sure it worked - if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) + if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out var returnVal)) continue; var commandList = commands.GetCommands(); @@ -223,8 +220,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false); var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false); // parse response to make sure it worked - string returnVal; - if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal)) + if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out string returnVal)) { return; } diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs index fd78dfa8e7..2542ddd2ad 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs @@ -1,5 +1,8 @@ using System; +using System.Collections.Generic; using System.IO; +using System.Net; +using System.Net.Sockets; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Net; @@ -7,13 +10,9 @@ using MediaBrowser.Controller; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; -using MediaBrowser.Model.System; using MediaBrowser.Model.LiveTv; -using System.Collections.Generic; -using System.Net.Sockets; -using System.Net; +using MediaBrowser.Model.MediaInfo; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun { diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs index b55b02ddc2..1f8ca276e7 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs @@ -1,18 +1,15 @@ -using System; +using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller; -using MediaBrowser.Controller.IO; -using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.System; using MediaBrowser.Model.LiveTv; -using System.Linq; -using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts { diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs index ab8731c397..638796e2ef 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs @@ -1,24 +1,24 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.LiveTv; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; -using System.IO; -using MediaBrowser.Controller.Library; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts { @@ -135,9 +135,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts var protocol = _mediaSourceManager.GetPathProtocol(path); - Uri uri; var isRemote = true; - if (Uri.TryCreate(path, UriKind.Absolute, out uri)) + if (Uri.TryCreate(path, UriKind.Absolute, out var uri)) { isRemote = !_networkManager.IsInLocalNetwork(uri.Host); } diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs index f83f958029..c77559c75d 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs @@ -6,14 +6,13 @@ using System.Linq; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.IO; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller; -using MediaBrowser.Controller.IO; using MediaBrowser.Controller.LiveTv; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts { @@ -118,12 +117,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts extInf = extInf.Trim(); - string remaining; - var attributes = ParseExtInf(extInf, out remaining); + var attributes = ParseExtInf(extInf, out string remaining); extInf = remaining; - string value; - if (attributes.TryGetValue("tvg-logo", out value)) + if (attributes.TryGetValue("tvg-logo", out string value)) { channel.ImageUrl = value; } @@ -131,11 +128,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts channel.Name = GetChannelName(extInf, attributes); channel.Number = GetChannelNumber(extInf, attributes, mediaUrl); - string tvgId; - attributes.TryGetValue("tvg-id", out tvgId); + attributes.TryGetValue("tvg-id", out string tvgId); - string channelId; - attributes.TryGetValue("channel-id", out channelId); + attributes.TryGetValue("channel-id", out string channelId); channel.TunerChannelId = string.IsNullOrWhiteSpace(tvgId) ? channelId : tvgId; @@ -173,8 +168,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts { var numberPart = nameInExtInf.Substring(0, numberIndex).Trim(new[] { ' ', '.' }); - double number; - if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out number)) + if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number)) { numberString = numberPart; } @@ -188,11 +182,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts if (!IsValidChannelNumber(numberString)) { - string value; - if (attributes.TryGetValue("tvg-id", out value)) + if (attributes.TryGetValue("tvg-id", out string value)) { - double doubleValue; - if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out doubleValue)) + if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleValue)) { numberString = value; } @@ -206,8 +198,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts if (!IsValidChannelNumber(numberString)) { - string value; - if (attributes.TryGetValue("channel-id", out value)) + if (attributes.TryGetValue("channel-id", out string value)) { numberString = value; } @@ -260,8 +251,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts return false; } - double value; - if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) + if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out var value)) { return false; } @@ -284,8 +274,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts { var numberPart = nameInExtInf.Substring(0, numberIndex).Trim(new[] { ' ', '.' }); - double number; - if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out number)) + if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number)) { //channel.Number = number.ToString(); nameInExtInf = nameInExtInf.Substring(numberIndex + 1).Trim(new[] { ' ', '-' }); @@ -293,8 +282,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts } } - string name; - attributes.TryGetValue("tvg-name", out name); + attributes.TryGetValue("tvg-name", out string name); if (string.IsNullOrWhiteSpace(name)) { @@ -303,7 +291,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts if (string.IsNullOrWhiteSpace(name)) { - attributes.TryGetValue("tvg-id", out name); + attributes.TryGetValue("tvg-id", string name); } if (string.IsNullOrWhiteSpace(name)) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs index 9b10daba0d..b39a9f6799 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs @@ -1,21 +1,15 @@ -using System; -using System.IO; +using System; +using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using Emby.Server.Implementations.IO; -using MediaBrowser.Model.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; -using MediaBrowser.Model.System; -using System.Globalization; -using MediaBrowser.Controller.IO; +using MediaBrowser.Model.IO; using MediaBrowser.Model.LiveTv; -using System.Collections.Generic; +using MediaBrowser.Model.MediaInfo; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.LiveTv.TunerHosts { diff --git a/Emby.Server.Implementations/Localization/Core/ar.json b/Emby.Server.Implementations/Localization/Core/ar.json index 857f66c647..ec2c3f2370 100644 --- a/Emby.Server.Implementations/Localization/Core/ar.json +++ b/Emby.Server.Implementations/Localization/Core/ar.json @@ -1,100 +1,100 @@ { - "Albums": "الألبومات", - "AppDeviceValues": "التطبيق: {0}. الجهاز: {1}.", - "Application": "التطبيق", - "Artists": "الفنانون", - "AuthenticationSucceededWithUserName": "تم التأكد من {0} بنجاح", - "Books": "الكتب", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "القنوات", - "ChapterNameValue": "الباب {0}", - "Collections": "المجاميع", - "DeviceOfflineWithName": "تم قطع الاتصال بـ{0}", - "DeviceOnlineWithName": "{0} متصل", - "FailedLoginAttemptWithUserName": "عملية تسجيل الدخول فشلت من {0}", - "Favorites": "المفضلات", - "Folders": "المجلدات", - "Games": "الألعاب", - "Genres": "أنواع الأفلام", - "HeaderAlbumArtists": "فنانو الألبومات", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "استئناف المشاهدة", - "HeaderFavoriteAlbums": "الألبومات المفضلة", - "HeaderFavoriteArtists": "الفنانون المفضلون", - "HeaderFavoriteEpisodes": "الحلقات المفضلة", - "HeaderFavoriteShows": "المسلسلات المفضلة", - "HeaderFavoriteSongs": "الأغاني المفضلة", - "HeaderLiveTV": "التلفاز المباشر", - "HeaderNextUp": "التشغيل التالي", - "HeaderRecordingGroups": "مجموعات التسجيل", - "HomeVideos": "الفيديوهات المنزلية", - "Inherit": "توريث", - "ItemAddedWithName": "تم إضافة {0} للمكتبة", - "ItemRemovedWithName": "تم إزالة {0} من المكتبة", - "LabelIpAddressValue": "عنوان الآي بي: {0}", - "LabelRunningTimeValue": "وقت التشغيل: {0}", - "Latest": "الأحدث", - "MessageApplicationUpdated": "لقد تم تحديث خادم أمبي", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "تم تحديث إعدادات الخادم في قسم {0}", - "MessageServerConfigurationUpdated": "تم تحديث إعدادات الخادم", - "MixedContent": "محتوى مخلوط", - "Movies": "الأفلام", - "Music": "الموسيقى", - "MusicVideos": "الفيديوهات الموسيقية", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "الموسم {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "يوجد تحديث للتطبيق", - "NotificationOptionApplicationUpdateInstalled": "تم تحديث التطبيق", - "NotificationOptionAudioPlayback": "بدأ تشغيل المقطع الصوتي", - "NotificationOptionAudioPlaybackStopped": "تم إيقاف تشغيل المقطع الصوتي", - "NotificationOptionCameraImageUploaded": "تم رقع صورة الكاميرا", - "NotificationOptionGamePlayback": "تم تشغيل اللعبة", - "NotificationOptionGamePlaybackStopped": "تم إيقاف تشغيل اللعبة", - "NotificationOptionInstallationFailed": "عملية التنصيب فشلت", - "NotificationOptionNewLibraryContent": "تم إضافة محتوى جديد", - "NotificationOptionPluginError": "فشل في الملحق", - "NotificationOptionPluginInstalled": "تم تثبيت الملحق", - "NotificationOptionPluginUninstalled": "تمت إزالة الملحق", - "NotificationOptionPluginUpdateInstalled": "تم تحديث الملحق", - "NotificationOptionServerRestartRequired": "يجب إعادة تشغيل الخادم", - "NotificationOptionTaskFailed": "فشل في المهمة المجدولة", - "NotificationOptionUserLockedOut": "تم إقفال حساب المستخدم", - "NotificationOptionVideoPlayback": "بدأ تشغيل الفيديو", - "NotificationOptionVideoPlaybackStopped": "تم إيقاف تشغيل الفيديو", - "Photos": "الصور", - "Playlists": "قوائم التشغيل", - "Plugin": "الملحق", - "PluginInstalledWithName": "تم تثبيت {0}", - "PluginUninstalledWithName": "تمت إزالة {0}", - "PluginUpdatedWithName": "تم تحديث {0}", - "ProviderValue": "المزود: {0}", - "ScheduledTaskFailedWithName": "العملية {0} فشلت", - "ScheduledTaskStartedWithName": "تم بدء {0}", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "الأغاني", - "StartupEmbyServerIsLoading": "خادم أمبي قيد التحميل. الرجاء المحاوية بعد حين", - "SubtitleDownloadFailureForItem": "عملية إنزال الترجمة فشلت لـ{0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "تم إنزال الترجمات لـ {0}", - "Sync": "مزامنة", - "System": "النظام", - "TvShows": "TV Shows", - "User": "المستخدم", - "UserCreatedWithName": "تم إنشاء المستخدم {0}", - "UserDeletedWithName": "تم حذف المستخدم {0}", - "UserDownloadingItemWithValues": "{0} يقوم بإنزال {1}", - "UserLockedOutWithName": "المستخدم {0} تم منعه من الدخول", - "UserOfflineFromDevice": "تم قطع اتصال {0} من {1}", - "UserOnlineFromDevice": "{0} متصلة عبر {1}", - "UserPasswordChangedWithName": "تم تغيير كلمة السر للمستخدم {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "قام {0} ببدء تشغيل {1}", - "UserStoppedPlayingItemWithValues": "قام {0} بإيقاف تشغيل {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "خاص - {0}", - "VersionNumber": "الإصدار رقم {0}" + "Albums": "الألبومات", + "AppDeviceValues": "التطبيق: {0}. الجهاز: {1}.", + "Application": "التطبيق", + "Artists": "الفنانون", + "AuthenticationSucceededWithUserName": "تم التأكد من {0} بنجاح", + "Books": "الكتب", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "القنوات", + "ChapterNameValue": "الباب {0}", + "Collections": "المجاميع", + "DeviceOfflineWithName": "تم قطع الاتصال بـ{0}", + "DeviceOnlineWithName": "{0} متصل", + "FailedLoginAttemptWithUserName": "عملية تسجيل الدخول فشلت من {0}", + "Favorites": "المفضلات", + "Folders": "المجلدات", + "Games": "الألعاب", + "Genres": "أنواع الأفلام", + "HeaderAlbumArtists": "فنانو الألبومات", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "استئناف المشاهدة", + "HeaderFavoriteAlbums": "الألبومات المفضلة", + "HeaderFavoriteArtists": "الفنانون المفضلون", + "HeaderFavoriteEpisodes": "الحلقات المفضلة", + "HeaderFavoriteShows": "المسلسلات المفضلة", + "HeaderFavoriteSongs": "الأغاني المفضلة", + "HeaderLiveTV": "التلفاز المباشر", + "HeaderNextUp": "التشغيل التالي", + "HeaderRecordingGroups": "مجموعات التسجيل", + "HomeVideos": "الفيديوهات المنزلية", + "Inherit": "توريث", + "ItemAddedWithName": "تم إضافة {0} للمكتبة", + "ItemRemovedWithName": "تم إزالة {0} من المكتبة", + "LabelIpAddressValue": "عنوان الآي بي: {0}", + "LabelRunningTimeValue": "وقت التشغيل: {0}", + "Latest": "الأحدث", + "MessageApplicationUpdated": "لقد تم تحديث خادم أمبي", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "تم تحديث إعدادات الخادم في قسم {0}", + "MessageServerConfigurationUpdated": "تم تحديث إعدادات الخادم", + "MixedContent": "محتوى مخلوط", + "Movies": "الأفلام", + "Music": "الموسيقى", + "MusicVideos": "الفيديوهات الموسيقية", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "الموسم {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "يوجد تحديث للتطبيق", + "NotificationOptionApplicationUpdateInstalled": "تم تحديث التطبيق", + "NotificationOptionAudioPlayback": "بدأ تشغيل المقطع الصوتي", + "NotificationOptionAudioPlaybackStopped": "تم إيقاف تشغيل المقطع الصوتي", + "NotificationOptionCameraImageUploaded": "تم رقع صورة الكاميرا", + "NotificationOptionGamePlayback": "تم تشغيل اللعبة", + "NotificationOptionGamePlaybackStopped": "تم إيقاف تشغيل اللعبة", + "NotificationOptionInstallationFailed": "عملية التنصيب فشلت", + "NotificationOptionNewLibraryContent": "تم إضافة محتوى جديد", + "NotificationOptionPluginError": "فشل في الملحق", + "NotificationOptionPluginInstalled": "تم تثبيت الملحق", + "NotificationOptionPluginUninstalled": "تمت إزالة الملحق", + "NotificationOptionPluginUpdateInstalled": "تم تحديث الملحق", + "NotificationOptionServerRestartRequired": "يجب إعادة تشغيل الخادم", + "NotificationOptionTaskFailed": "فشل في المهمة المجدولة", + "NotificationOptionUserLockedOut": "تم إقفال حساب المستخدم", + "NotificationOptionVideoPlayback": "بدأ تشغيل الفيديو", + "NotificationOptionVideoPlaybackStopped": "تم إيقاف تشغيل الفيديو", + "Photos": "الصور", + "Playlists": "قوائم التشغيل", + "Plugin": "الملحق", + "PluginInstalledWithName": "تم تثبيت {0}", + "PluginUninstalledWithName": "تمت إزالة {0}", + "PluginUpdatedWithName": "تم تحديث {0}", + "ProviderValue": "المزود: {0}", + "ScheduledTaskFailedWithName": "العملية {0} فشلت", + "ScheduledTaskStartedWithName": "تم بدء {0}", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "الأغاني", + "StartupEmbyServerIsLoading": "خادم أمبي قيد التحميل. الرجاء المحاوية بعد حين", + "SubtitleDownloadFailureForItem": "عملية إنزال الترجمة فشلت لـ{0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "تم إنزال الترجمات لـ {0}", + "Sync": "مزامنة", + "System": "النظام", + "TvShows": "TV Shows", + "User": "المستخدم", + "UserCreatedWithName": "تم إنشاء المستخدم {0}", + "UserDeletedWithName": "تم حذف المستخدم {0}", + "UserDownloadingItemWithValues": "{0} يقوم بإنزال {1}", + "UserLockedOutWithName": "المستخدم {0} تم منعه من الدخول", + "UserOfflineFromDevice": "تم قطع اتصال {0} من {1}", + "UserOnlineFromDevice": "{0} متصلة عبر {1}", + "UserPasswordChangedWithName": "تم تغيير كلمة السر للمستخدم {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "قام {0} ببدء تشغيل {1}", + "UserStoppedPlayingItemWithValues": "قام {0} بإيقاف تشغيل {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "خاص - {0}", + "VersionNumber": "الإصدار رقم {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/bg-BG.json b/Emby.Server.Implementations/Localization/Core/bg-BG.json index b768e03c6b..ba6c985550 100644 --- a/Emby.Server.Implementations/Localization/Core/bg-BG.json +++ b/Emby.Server.Implementations/Localization/Core/bg-BG.json @@ -1,100 +1,100 @@ { - "Albums": "Албуми", - "AppDeviceValues": "Програма: {0}, Устройство: {1}", - "Application": "Програма", - "Artists": "Изпълнители", - "AuthenticationSucceededWithUserName": "{0} се удостовери успешно", - "Books": "Книги", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Канали", - "ChapterNameValue": "Глава {0}", - "Collections": "Колекции", - "DeviceOfflineWithName": "{0} се разкачи", - "DeviceOnlineWithName": "{0} е свързан", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Любими", - "Folders": "Папки", - "Games": "Игри", - "Genres": "Жанрове", - "HeaderAlbumArtists": "Изпълнители на албуми", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Продължаване на гледането", - "HeaderFavoriteAlbums": "Любими албуми", - "HeaderFavoriteArtists": "Любими изпълнители", - "HeaderFavoriteEpisodes": "Любими епизоди", - "HeaderFavoriteShows": "Любими сериали", - "HeaderFavoriteSongs": "Любими песни", - "HeaderLiveTV": "Телевизия на живо", - "HeaderNextUp": "Следва", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Домашни клипове", - "Inherit": "Наследяване", - "ItemAddedWithName": "{0} е добавено към библиотеката", - "ItemRemovedWithName": "{0} е премахнато от библиотеката", - "LabelIpAddressValue": "ИП адрес: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Последни", - "MessageApplicationUpdated": "Сървърът е обновен", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Смесено съдържание", - "Movies": "Филми", - "Music": "Музика", - "MusicVideos": "Музикални клипове", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Сезон {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Налично е обновление на програмата", - "NotificationOptionApplicationUpdateInstalled": "Обновлението на програмата е инсталирано", - "NotificationOptionAudioPlayback": "Възпроизвеждането на звук започна", - "NotificationOptionAudioPlaybackStopped": "Възпроизвеждането на звук е спряно", - "NotificationOptionCameraImageUploaded": "Изображението от фотоапарата е качено", - "NotificationOptionGamePlayback": "Възпроизвеждането на играта започна", - "NotificationOptionGamePlaybackStopped": "Възпроизвеждането на играта е спряна", - "NotificationOptionInstallationFailed": "Неуспешно инсталиране", - "NotificationOptionNewLibraryContent": "Добавено е ново съдържание", - "NotificationOptionPluginError": "Грешка в приставка", - "NotificationOptionPluginInstalled": "Приставката е инсталирана", - "NotificationOptionPluginUninstalled": "Приставката е деинсталирана", - "NotificationOptionPluginUpdateInstalled": "Обновлението на приставката е инсталирано", - "NotificationOptionServerRestartRequired": "Нужно е повторно пускане на сървъра", - "NotificationOptionTaskFailed": "Грешка в планирана задача", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Възпроизвеждането на видео започна", - "NotificationOptionVideoPlaybackStopped": "Възпроизвеждането на видео е спряно", - "Photos": "Снимки", - "Playlists": "Списъци", - "Plugin": "Приставка", - "PluginInstalledWithName": "{0} е инсталирано", - "PluginUninstalledWithName": "{0} е деинсталирано", - "PluginUpdatedWithName": "{0} е обновено", - "ProviderValue": "Доставчик: {0}", - "ScheduledTaskFailedWithName": "{0} се провали", - "ScheduledTaskStartedWithName": "{0} започна", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Сериали", - "Songs": "Песни", - "StartupEmbyServerIsLoading": "Сървърът зарежда. Моля, опитайте отново след малко.", - "SubtitleDownloadFailureForItem": "Неуспешно изтегляне на субтитри за {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Изтеглени са субтитри за {0}", - "Sync": "Синхронизиране", - "System": "Система", - "TvShows": "Телевизионни сериали", - "User": "Потребител", - "UserCreatedWithName": "Потребителят {0} е създаден", - "UserDeletedWithName": "Потребителят {0} е изтрит", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} се разкачи от {1}", - "UserOnlineFromDevice": "{0} е на линия от {1}", - "UserPasswordChangedWithName": "Паролата на потребителя {0} е променена", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} пусна {1}", - "UserStoppedPlayingItemWithValues": "{0} спря {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Специални - {0}", - "VersionNumber": "Версия {0}" + "Albums": "Албуми", + "AppDeviceValues": "Програма: {0}, Устройство: {1}", + "Application": "Програма", + "Artists": "Изпълнители", + "AuthenticationSucceededWithUserName": "{0} се удостовери успешно", + "Books": "Книги", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Канали", + "ChapterNameValue": "Глава {0}", + "Collections": "Колекции", + "DeviceOfflineWithName": "{0} се разкачи", + "DeviceOnlineWithName": "{0} е свързан", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Любими", + "Folders": "Папки", + "Games": "Игри", + "Genres": "Жанрове", + "HeaderAlbumArtists": "Изпълнители на албуми", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Продължаване на гледането", + "HeaderFavoriteAlbums": "Любими албуми", + "HeaderFavoriteArtists": "Любими изпълнители", + "HeaderFavoriteEpisodes": "Любими епизоди", + "HeaderFavoriteShows": "Любими сериали", + "HeaderFavoriteSongs": "Любими песни", + "HeaderLiveTV": "Телевизия на живо", + "HeaderNextUp": "Следва", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Домашни клипове", + "Inherit": "Наследяване", + "ItemAddedWithName": "{0} е добавено към библиотеката", + "ItemRemovedWithName": "{0} е премахнато от библиотеката", + "LabelIpAddressValue": "ИП адрес: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Последни", + "MessageApplicationUpdated": "Сървърът е обновен", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Смесено съдържание", + "Movies": "Филми", + "Music": "Музика", + "MusicVideos": "Музикални клипове", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Сезон {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Налично е обновление на програмата", + "NotificationOptionApplicationUpdateInstalled": "Обновлението на програмата е инсталирано", + "NotificationOptionAudioPlayback": "Възпроизвеждането на звук започна", + "NotificationOptionAudioPlaybackStopped": "Възпроизвеждането на звук е спряно", + "NotificationOptionCameraImageUploaded": "Изображението от фотоапарата е качено", + "NotificationOptionGamePlayback": "Възпроизвеждането на играта започна", + "NotificationOptionGamePlaybackStopped": "Възпроизвеждането на играта е спряна", + "NotificationOptionInstallationFailed": "Неуспешно инсталиране", + "NotificationOptionNewLibraryContent": "Добавено е ново съдържание", + "NotificationOptionPluginError": "Грешка в приставка", + "NotificationOptionPluginInstalled": "Приставката е инсталирана", + "NotificationOptionPluginUninstalled": "Приставката е деинсталирана", + "NotificationOptionPluginUpdateInstalled": "Обновлението на приставката е инсталирано", + "NotificationOptionServerRestartRequired": "Нужно е повторно пускане на сървъра", + "NotificationOptionTaskFailed": "Грешка в планирана задача", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Възпроизвеждането на видео започна", + "NotificationOptionVideoPlaybackStopped": "Възпроизвеждането на видео е спряно", + "Photos": "Снимки", + "Playlists": "Списъци", + "Plugin": "Приставка", + "PluginInstalledWithName": "{0} е инсталирано", + "PluginUninstalledWithName": "{0} е деинсталирано", + "PluginUpdatedWithName": "{0} е обновено", + "ProviderValue": "Доставчик: {0}", + "ScheduledTaskFailedWithName": "{0} се провали", + "ScheduledTaskStartedWithName": "{0} започна", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Сериали", + "Songs": "Песни", + "StartupEmbyServerIsLoading": "Сървърът зарежда. Моля, опитайте отново след малко.", + "SubtitleDownloadFailureForItem": "Неуспешно изтегляне на субтитри за {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Изтеглени са субтитри за {0}", + "Sync": "Синхронизиране", + "System": "Система", + "TvShows": "Телевизионни сериали", + "User": "Потребител", + "UserCreatedWithName": "Потребителят {0} е създаден", + "UserDeletedWithName": "Потребителят {0} е изтрит", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} се разкачи от {1}", + "UserOnlineFromDevice": "{0} е на линия от {1}", + "UserPasswordChangedWithName": "Паролата на потребителя {0} е променена", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} пусна {1}", + "UserStoppedPlayingItemWithValues": "{0} спря {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Специални - {0}", + "VersionNumber": "Версия {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/ca.json b/Emby.Server.Implementations/Localization/Core/ca.json index 9a6a8e0c48..a818b78de9 100644 --- a/Emby.Server.Implementations/Localization/Core/ca.json +++ b/Emby.Server.Implementations/Localization/Core/ca.json @@ -1,100 +1,100 @@ { - "Albums": "Àlbums", - "AppDeviceValues": "App: {0}, Dispositiu: {1}", - "Application": "Application", - "Artists": "Artistes", - "AuthenticationSucceededWithUserName": "{0} s'ha autenticat correctament", - "Books": "Llibres", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Canals", - "ChapterNameValue": "Episodi {0}", - "Collections": "Col·leccions", - "DeviceOfflineWithName": "{0} s'ha desconnectat", - "DeviceOnlineWithName": "{0} està connectat", - "FailedLoginAttemptWithUserName": "Intent de connexió fallit des de {0}", - "Favorites": "Preferits", - "Folders": "Directoris", - "Games": "Jocs", - "Genres": "Gèneres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continua Veient", - "HeaderFavoriteAlbums": "Àlbums Preferits", - "HeaderFavoriteArtists": "Artistes Preferits", - "HeaderFavoriteEpisodes": "Episodis Preferits", - "HeaderFavoriteShows": "Programes Preferits", - "HeaderFavoriteSongs": "Cançons Preferides", - "HeaderLiveTV": "TV en Directe", - "HeaderNextUp": "A continuació", - "HeaderRecordingGroups": "Grups d'Enregistrament", - "HomeVideos": "Vídeos domèstics", - "Inherit": "Heretat", - "ItemAddedWithName": "{0} afegit a la biblioteca", - "ItemRemovedWithName": "{0} eliminat de la biblioteca", - "LabelIpAddressValue": "Adreça IP: {0}", - "LabelRunningTimeValue": "Temps en marxa: {0}", - "Latest": "Darreres", - "MessageApplicationUpdated": "El Servidor d'Jellyfin ha estat actualitzat", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "La secció de configuració {0} ha estat actualitzada", - "MessageServerConfigurationUpdated": "S'ha actualitzat la configuració del servidor", - "MixedContent": "Contingut mesclat", - "Movies": "Pel·lícules", - "Music": "Música", - "MusicVideos": "Vídeos musicals", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Temporada {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Actualització d'aplicació disponible", - "NotificationOptionApplicationUpdateInstalled": "Actualització d'aplicació instal·lada", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Un component ha fallat", - "NotificationOptionPluginInstalled": "Complement instal·lat", - "NotificationOptionPluginUninstalled": "Complement desinstal·lat", - "NotificationOptionPluginUpdateInstalled": "Actualització de complement instal·lada", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Fotos", - "Playlists": "Llistes de reproducció", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} ha estat instal·lat", - "PluginUninstalledWithName": "{0} ha estat desinstal·lat", - "PluginUpdatedWithName": "{0} ha estat actualitzat", - "ProviderValue": "Proveïdor: {0}", - "ScheduledTaskFailedWithName": "{0} ha fallat", - "ScheduledTaskStartedWithName": "{0} iniciat", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Espectacles", - "Songs": "Cançons", - "StartupEmbyServerIsLoading": "El Servidor d'Jellyfin està carregant. Si et plau, prova de nou en breus.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtítols descarregats per a {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "Espectacles de TV", - "User": "User", - "UserCreatedWithName": "S'ha creat l'usuari {0}", - "UserDeletedWithName": "L'usuari {0} ha estat eliminat", - "UserDownloadingItemWithValues": "{0} està descarregant {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} s'ha desconnectat de {1}", - "UserOnlineFromDevice": "{0} està connectat des de {1}", - "UserPasswordChangedWithName": "La contrasenya ha estat canviada per a l'usuari {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} ha començat a reproduir {1}", - "UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Especial - {0}", - "VersionNumber": "Versió {0}" + "Albums": "Àlbums", + "AppDeviceValues": "App: {0}, Dispositiu: {1}", + "Application": "Application", + "Artists": "Artistes", + "AuthenticationSucceededWithUserName": "{0} s'ha autenticat correctament", + "Books": "Llibres", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Canals", + "ChapterNameValue": "Episodi {0}", + "Collections": "Col·leccions", + "DeviceOfflineWithName": "{0} s'ha desconnectat", + "DeviceOnlineWithName": "{0} està connectat", + "FailedLoginAttemptWithUserName": "Intent de connexió fallit des de {0}", + "Favorites": "Preferits", + "Folders": "Directoris", + "Games": "Jocs", + "Genres": "Gèneres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continua Veient", + "HeaderFavoriteAlbums": "Àlbums Preferits", + "HeaderFavoriteArtists": "Artistes Preferits", + "HeaderFavoriteEpisodes": "Episodis Preferits", + "HeaderFavoriteShows": "Programes Preferits", + "HeaderFavoriteSongs": "Cançons Preferides", + "HeaderLiveTV": "TV en Directe", + "HeaderNextUp": "A continuació", + "HeaderRecordingGroups": "Grups d'Enregistrament", + "HomeVideos": "Vídeos domèstics", + "Inherit": "Heretat", + "ItemAddedWithName": "{0} afegit a la biblioteca", + "ItemRemovedWithName": "{0} eliminat de la biblioteca", + "LabelIpAddressValue": "Adreça IP: {0}", + "LabelRunningTimeValue": "Temps en marxa: {0}", + "Latest": "Darreres", + "MessageApplicationUpdated": "El Servidor d'Jellyfin ha estat actualitzat", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "La secció de configuració {0} ha estat actualitzada", + "MessageServerConfigurationUpdated": "S'ha actualitzat la configuració del servidor", + "MixedContent": "Contingut mesclat", + "Movies": "Pel·lícules", + "Music": "Música", + "MusicVideos": "Vídeos musicals", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Temporada {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Actualització d'aplicació disponible", + "NotificationOptionApplicationUpdateInstalled": "Actualització d'aplicació instal·lada", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Un component ha fallat", + "NotificationOptionPluginInstalled": "Complement instal·lat", + "NotificationOptionPluginUninstalled": "Complement desinstal·lat", + "NotificationOptionPluginUpdateInstalled": "Actualització de complement instal·lada", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Fotos", + "Playlists": "Llistes de reproducció", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} ha estat instal·lat", + "PluginUninstalledWithName": "{0} ha estat desinstal·lat", + "PluginUpdatedWithName": "{0} ha estat actualitzat", + "ProviderValue": "Proveïdor: {0}", + "ScheduledTaskFailedWithName": "{0} ha fallat", + "ScheduledTaskStartedWithName": "{0} iniciat", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Espectacles", + "Songs": "Cançons", + "StartupEmbyServerIsLoading": "El Servidor d'Jellyfin està carregant. Si et plau, prova de nou en breus.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtítols descarregats per a {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "Espectacles de TV", + "User": "User", + "UserCreatedWithName": "S'ha creat l'usuari {0}", + "UserDeletedWithName": "L'usuari {0} ha estat eliminat", + "UserDownloadingItemWithValues": "{0} està descarregant {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} s'ha desconnectat de {1}", + "UserOnlineFromDevice": "{0} està connectat des de {1}", + "UserPasswordChangedWithName": "La contrasenya ha estat canviada per a l'usuari {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} ha començat a reproduir {1}", + "UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Especial - {0}", + "VersionNumber": "Versió {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/cs.json b/Emby.Server.Implementations/Localization/Core/cs.json index 51fb132a4a..e066051a84 100644 --- a/Emby.Server.Implementations/Localization/Core/cs.json +++ b/Emby.Server.Implementations/Localization/Core/cs.json @@ -1,100 +1,100 @@ { - "Albums": "Alba", - "AppDeviceValues": "Aplikace: {0}, Zařízení: {1}", - "Application": "Aplikace", - "Artists": "Umělci", - "AuthenticationSucceededWithUserName": "{0} úspěšně ověřen", - "Books": "Knihy", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanály", - "ChapterNameValue": "Kapitola {0}", - "Collections": "Kolekce", - "DeviceOfflineWithName": "{0} se odpojil", - "DeviceOnlineWithName": "{0} je připojen", - "FailedLoginAttemptWithUserName": "Neúspěšný pokus o přihlášení z {0}", - "Favorites": "Oblíbené", - "Folders": "Složky", - "Games": "Hry", - "Genres": "Žánry", - "HeaderAlbumArtists": "Umělci alba", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Pokračovat ve sledování", - "HeaderFavoriteAlbums": "Oblíbená alba", - "HeaderFavoriteArtists": "Oblíbení umělci", - "HeaderFavoriteEpisodes": "Oblíbené epizody", - "HeaderFavoriteShows": "Oblíbené seriály", - "HeaderFavoriteSongs": "Oblíbené písně", - "HeaderLiveTV": "Živá TV", - "HeaderNextUp": "Nadcházející", - "HeaderRecordingGroups": "Skupiny nahrávek", - "HomeVideos": "Domáci videa", - "Inherit": "Zdědit", - "ItemAddedWithName": "{0} byl přidán do knihovny", - "ItemRemovedWithName": "{0} byl odstraněn z knihovny", - "LabelIpAddressValue": "IP adresa: {0}", - "LabelRunningTimeValue": "Délka média: {0}", - "Latest": "Nejnovější", - "MessageApplicationUpdated": "Jellyfin Server byl aktualizován", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizována", - "MessageServerConfigurationUpdated": "Konfigurace serveru aktualizována", - "MixedContent": "Smíšený obsah", - "Movies": "Filmy", - "Music": "Hudba", - "MusicVideos": "Hudební klipy", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Sezóna {0}", - "NameSeasonUnknown": "Neznámá sezóna", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Dostupná aktualizace aplikace", - "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalována", - "NotificationOptionAudioPlayback": "Přehrávání audia zahájeno", - "NotificationOptionAudioPlaybackStopped": "Přehrávání audia ukončeno", - "NotificationOptionCameraImageUploaded": "Kamerový záznam nahrán", - "NotificationOptionGamePlayback": "Spuštění hry zahájeno", - "NotificationOptionGamePlaybackStopped": "Hra ukončena", - "NotificationOptionInstallationFailed": "Chyba instalace", - "NotificationOptionNewLibraryContent": "Přidán nový obsah", - "NotificationOptionPluginError": "Chyba zásuvného modulu", - "NotificationOptionPluginInstalled": "Zásuvný modul instalován", - "NotificationOptionPluginUninstalled": "Zásuvný modul odstraněn", - "NotificationOptionPluginUpdateInstalled": "Aktualizace zásuvného modulu instalována", - "NotificationOptionServerRestartRequired": "Je vyžadován restart serveru", - "NotificationOptionTaskFailed": "Chyba naplánované úlohy", - "NotificationOptionUserLockedOut": "Uživatel uzamčen", - "NotificationOptionVideoPlayback": "Přehrávání videa zahájeno", - "NotificationOptionVideoPlaybackStopped": "Přehrávání videa ukončeno", - "Photos": "Fotky", - "Playlists": "Seznamy skladeb", - "Plugin": "Zásuvný modul", - "PluginInstalledWithName": "{0} byl nainstalován", - "PluginUninstalledWithName": "{0} byl odinstalován", - "PluginUpdatedWithName": "{0} byl aktualizován", - "ProviderValue": "Poskytl: {0}", - "ScheduledTaskFailedWithName": "{0} selhalo", - "ScheduledTaskStartedWithName": "{0} zahájeno", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Seriály", - "Songs": "Skladby", - "StartupEmbyServerIsLoading": "Jellyfin Server je spouštěn. Zkuste to prosím v brzké době znovu.", - "SubtitleDownloadFailureForItem": "Stahování titulků selhalo pro {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Staženy titulky pro {0}", - "Sync": "Synchronizace", - "System": "Systém", - "TvShows": "TV seriály", - "User": "Uživatel", - "UserCreatedWithName": "Uživatel {0} byl vytvořen", - "UserDeletedWithName": "Uživatel {0} byl smazán", - "UserDownloadingItemWithValues": "{0} stahuje {1}", - "UserLockedOutWithName": "Uživatel {0} byl odemčen", - "UserOfflineFromDevice": "{0} se odpojil od {1}", - "UserOnlineFromDevice": "{0} se připojil z {1}", - "UserPasswordChangedWithName": "Provedena změna hesla pro uživatele {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} spustil přehrávání {1}", - "UserStoppedPlayingItemWithValues": "{0} zastavil přehrávání {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Speciál - {0}", - "VersionNumber": "Verze {0}" + "Albums": "Alba", + "AppDeviceValues": "Aplikace: {0}, Zařízení: {1}", + "Application": "Aplikace", + "Artists": "Umělci", + "AuthenticationSucceededWithUserName": "{0} úspěšně ověřen", + "Books": "Knihy", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanály", + "ChapterNameValue": "Kapitola {0}", + "Collections": "Kolekce", + "DeviceOfflineWithName": "{0} se odpojil", + "DeviceOnlineWithName": "{0} je připojen", + "FailedLoginAttemptWithUserName": "Neúspěšný pokus o přihlášení z {0}", + "Favorites": "Oblíbené", + "Folders": "Složky", + "Games": "Hry", + "Genres": "Žánry", + "HeaderAlbumArtists": "Umělci alba", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Pokračovat ve sledování", + "HeaderFavoriteAlbums": "Oblíbená alba", + "HeaderFavoriteArtists": "Oblíbení umělci", + "HeaderFavoriteEpisodes": "Oblíbené epizody", + "HeaderFavoriteShows": "Oblíbené seriály", + "HeaderFavoriteSongs": "Oblíbené písně", + "HeaderLiveTV": "Živá TV", + "HeaderNextUp": "Nadcházející", + "HeaderRecordingGroups": "Skupiny nahrávek", + "HomeVideos": "Domáci videa", + "Inherit": "Zdědit", + "ItemAddedWithName": "{0} byl přidán do knihovny", + "ItemRemovedWithName": "{0} byl odstraněn z knihovny", + "LabelIpAddressValue": "IP adresa: {0}", + "LabelRunningTimeValue": "Délka média: {0}", + "Latest": "Nejnovější", + "MessageApplicationUpdated": "Jellyfin Server byl aktualizován", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizována", + "MessageServerConfigurationUpdated": "Konfigurace serveru aktualizována", + "MixedContent": "Smíšený obsah", + "Movies": "Filmy", + "Music": "Hudba", + "MusicVideos": "Hudební klipy", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Sezóna {0}", + "NameSeasonUnknown": "Neznámá sezóna", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Dostupná aktualizace aplikace", + "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalována", + "NotificationOptionAudioPlayback": "Přehrávání audia zahájeno", + "NotificationOptionAudioPlaybackStopped": "Přehrávání audia ukončeno", + "NotificationOptionCameraImageUploaded": "Kamerový záznam nahrán", + "NotificationOptionGamePlayback": "Spuštění hry zahájeno", + "NotificationOptionGamePlaybackStopped": "Hra ukončena", + "NotificationOptionInstallationFailed": "Chyba instalace", + "NotificationOptionNewLibraryContent": "Přidán nový obsah", + "NotificationOptionPluginError": "Chyba zásuvného modulu", + "NotificationOptionPluginInstalled": "Zásuvný modul instalován", + "NotificationOptionPluginUninstalled": "Zásuvný modul odstraněn", + "NotificationOptionPluginUpdateInstalled": "Aktualizace zásuvného modulu instalována", + "NotificationOptionServerRestartRequired": "Je vyžadován restart serveru", + "NotificationOptionTaskFailed": "Chyba naplánované úlohy", + "NotificationOptionUserLockedOut": "Uživatel uzamčen", + "NotificationOptionVideoPlayback": "Přehrávání videa zahájeno", + "NotificationOptionVideoPlaybackStopped": "Přehrávání videa ukončeno", + "Photos": "Fotky", + "Playlists": "Seznamy skladeb", + "Plugin": "Zásuvný modul", + "PluginInstalledWithName": "{0} byl nainstalován", + "PluginUninstalledWithName": "{0} byl odinstalován", + "PluginUpdatedWithName": "{0} byl aktualizován", + "ProviderValue": "Poskytl: {0}", + "ScheduledTaskFailedWithName": "{0} selhalo", + "ScheduledTaskStartedWithName": "{0} zahájeno", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Seriály", + "Songs": "Skladby", + "StartupEmbyServerIsLoading": "Jellyfin Server je spouštěn. Zkuste to prosím v brzké době znovu.", + "SubtitleDownloadFailureForItem": "Stahování titulků selhalo pro {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Staženy titulky pro {0}", + "Sync": "Synchronizace", + "System": "Systém", + "TvShows": "TV seriály", + "User": "Uživatel", + "UserCreatedWithName": "Uživatel {0} byl vytvořen", + "UserDeletedWithName": "Uživatel {0} byl smazán", + "UserDownloadingItemWithValues": "{0} stahuje {1}", + "UserLockedOutWithName": "Uživatel {0} byl odemčen", + "UserOfflineFromDevice": "{0} se odpojil od {1}", + "UserOnlineFromDevice": "{0} se připojil z {1}", + "UserPasswordChangedWithName": "Provedena změna hesla pro uživatele {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} spustil přehrávání {1}", + "UserStoppedPlayingItemWithValues": "{0} zastavil přehrávání {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Speciál - {0}", + "VersionNumber": "Verze {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/da.json b/Emby.Server.Implementations/Localization/Core/da.json index c7c2a796e6..30581c389b 100644 --- a/Emby.Server.Implementations/Localization/Core/da.json +++ b/Emby.Server.Implementations/Localization/Core/da.json @@ -1,100 +1,100 @@ { - "Albums": "Album", - "AppDeviceValues": "App: {0}, Enhed: {1}", - "Application": "Applikation", - "Artists": "Kunstner", - "AuthenticationSucceededWithUserName": "{0} bekræftet med succes", - "Books": "Bøger", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanaler", - "ChapterNameValue": "Kapitel {0}", - "Collections": "Samlinger", - "DeviceOfflineWithName": "{0} har afbrudt forbindelsen", - "DeviceOnlineWithName": "{0} er forbundet", - "FailedLoginAttemptWithUserName": "Fejlet loginforsøg fra {0}", - "Favorites": "Favoritter", - "Folders": "Mapper", - "Games": "Spil", - "Genres": "Genre", - "HeaderAlbumArtists": "Albumkunstnere", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Fortsæt Afspilning", - "HeaderFavoriteAlbums": "Favoritalbum", - "HeaderFavoriteArtists": "Favoritkunstnere", - "HeaderFavoriteEpisodes": "Favoritepisoder", - "HeaderFavoriteShows": "Favorit serier", - "HeaderFavoriteSongs": "Favoritsange", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Næste", - "HeaderRecordingGroups": "Optagegrupper", - "HomeVideos": "Hjemmevideoer", - "Inherit": "Arv", - "ItemAddedWithName": "{0} blev tilføjet til biblioteket", - "ItemRemovedWithName": "{0} blev fjernet fra biblioteket", - "LabelIpAddressValue": "IP-adresse: {0}", - "LabelRunningTimeValue": "Spilletid: {0}", - "Latest": "Seneste", - "MessageApplicationUpdated": "Jellyfin Server er blevet opdateret", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret", - "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret", - "MixedContent": "Blandet indhold", - "Movies": "Film", - "Music": "Musik", - "MusicVideos": "Musikvideoer", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Sæson {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilgængelig", - "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret", - "NotificationOptionAudioPlayback": "Audioafspilning påbegyndt", - "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet", - "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet", - "NotificationOptionGamePlayback": "Afspilning af Spil påbegyndt", - "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet", - "NotificationOptionInstallationFailed": "Installationsfejl", - "NotificationOptionNewLibraryContent": "Nyt indhold tilføjet", - "NotificationOptionPluginError": "Pluginfejl", - "NotificationOptionPluginInstalled": "Plugin installeret", - "NotificationOptionPluginUninstalled": "Plugin afinstalleret", - "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret", - "NotificationOptionServerRestartRequired": "Genstart af server påkrævet", - "NotificationOptionTaskFailed": "Planlagt opgave fejlet", - "NotificationOptionUserLockedOut": "Bruger låst ude", - "NotificationOptionVideoPlayback": "Videoafspilning påbegyndt", - "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet", - "Photos": "Fotos", - "Playlists": "Spillelister", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} blev installeret", - "PluginUninstalledWithName": "{0} blev afinstalleret", - "PluginUpdatedWithName": "{0} blev opdateret", - "ProviderValue": "Udbyder: {0}", - "ScheduledTaskFailedWithName": "{0} fejlet", - "ScheduledTaskStartedWithName": "{0} påbegyndt", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Sange", - "StartupEmbyServerIsLoading": "Jellyfin Server indlæser. Prøv venligst igen om kort tid.", - "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}", - "Sync": "Synk", - "System": "System", - "TvShows": "TV Shows", - "User": "Bruger", - "UserCreatedWithName": "Bruger {0} er blevet oprettet", - "UserDeletedWithName": "Brugeren {0} er blevet slettet", - "UserDownloadingItemWithValues": "{0} downloader {1}", - "UserLockedOutWithName": "Brugeren {0} er blevet låst ude", - "UserOfflineFromDevice": "{0} har afbrudt fra {1}", - "UserOnlineFromDevice": "{0} er online fra {1}", - "UserPasswordChangedWithName": "Adgangskode er ændret for bruger {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} har påbegyndt afspilning af {1}", - "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Album", + "AppDeviceValues": "App: {0}, Enhed: {1}", + "Application": "Applikation", + "Artists": "Kunstner", + "AuthenticationSucceededWithUserName": "{0} bekræftet med succes", + "Books": "Bøger", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanaler", + "ChapterNameValue": "Kapitel {0}", + "Collections": "Samlinger", + "DeviceOfflineWithName": "{0} har afbrudt forbindelsen", + "DeviceOnlineWithName": "{0} er forbundet", + "FailedLoginAttemptWithUserName": "Fejlet loginforsøg fra {0}", + "Favorites": "Favoritter", + "Folders": "Mapper", + "Games": "Spil", + "Genres": "Genre", + "HeaderAlbumArtists": "Albumkunstnere", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Fortsæt Afspilning", + "HeaderFavoriteAlbums": "Favoritalbum", + "HeaderFavoriteArtists": "Favoritkunstnere", + "HeaderFavoriteEpisodes": "Favoritepisoder", + "HeaderFavoriteShows": "Favorit serier", + "HeaderFavoriteSongs": "Favoritsange", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Næste", + "HeaderRecordingGroups": "Optagegrupper", + "HomeVideos": "Hjemmevideoer", + "Inherit": "Arv", + "ItemAddedWithName": "{0} blev tilføjet til biblioteket", + "ItemRemovedWithName": "{0} blev fjernet fra biblioteket", + "LabelIpAddressValue": "IP-adresse: {0}", + "LabelRunningTimeValue": "Spilletid: {0}", + "Latest": "Seneste", + "MessageApplicationUpdated": "Jellyfin Server er blevet opdateret", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret", + "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret", + "MixedContent": "Blandet indhold", + "Movies": "Film", + "Music": "Musik", + "MusicVideos": "Musikvideoer", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Sæson {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilgængelig", + "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret", + "NotificationOptionAudioPlayback": "Audioafspilning påbegyndt", + "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet", + "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet", + "NotificationOptionGamePlayback": "Afspilning af Spil påbegyndt", + "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet", + "NotificationOptionInstallationFailed": "Installationsfejl", + "NotificationOptionNewLibraryContent": "Nyt indhold tilføjet", + "NotificationOptionPluginError": "Pluginfejl", + "NotificationOptionPluginInstalled": "Plugin installeret", + "NotificationOptionPluginUninstalled": "Plugin afinstalleret", + "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret", + "NotificationOptionServerRestartRequired": "Genstart af server påkrævet", + "NotificationOptionTaskFailed": "Planlagt opgave fejlet", + "NotificationOptionUserLockedOut": "Bruger låst ude", + "NotificationOptionVideoPlayback": "Videoafspilning påbegyndt", + "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet", + "Photos": "Fotos", + "Playlists": "Spillelister", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} blev installeret", + "PluginUninstalledWithName": "{0} blev afinstalleret", + "PluginUpdatedWithName": "{0} blev opdateret", + "ProviderValue": "Udbyder: {0}", + "ScheduledTaskFailedWithName": "{0} fejlet", + "ScheduledTaskStartedWithName": "{0} påbegyndt", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Sange", + "StartupEmbyServerIsLoading": "Jellyfin Server indlæser. Prøv venligst igen om kort tid.", + "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}", + "Sync": "Synk", + "System": "System", + "TvShows": "TV Shows", + "User": "Bruger", + "UserCreatedWithName": "Bruger {0} er blevet oprettet", + "UserDeletedWithName": "Brugeren {0} er blevet slettet", + "UserDownloadingItemWithValues": "{0} downloader {1}", + "UserLockedOutWithName": "Brugeren {0} er blevet låst ude", + "UserOfflineFromDevice": "{0} har afbrudt fra {1}", + "UserOnlineFromDevice": "{0} er online fra {1}", + "UserPasswordChangedWithName": "Adgangskode er ændret for bruger {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} har påbegyndt afspilning af {1}", + "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/de.json b/Emby.Server.Implementations/Localization/Core/de.json index c5873450c4..98cb07663f 100644 --- a/Emby.Server.Implementations/Localization/Core/de.json +++ b/Emby.Server.Implementations/Localization/Core/de.json @@ -1,100 +1,100 @@ { - "Albums": "Alben", - "AppDeviceValues": "App: {0}, Gerät: {1}", - "Application": "Anwendung", - "Artists": "Interpreten", - "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert", - "Books": "Bücher", - "CameraImageUploadedFrom": "Ein neues Bild wurde hochgeladen von {0}", - "Channels": "Kanäle", - "ChapterNameValue": "Kapitel {0}", - "Collections": "Sammlungen", - "DeviceOfflineWithName": "{0} wurde getrennt", - "DeviceOnlineWithName": "{0} ist verbunden", - "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}", - "Favorites": "Favoriten", - "Folders": "Verzeichnisse", - "Games": "Spiele", - "Genres": "Genres", - "HeaderAlbumArtists": "Album-Künstler", - "HeaderCameraUploads": "Kamera Uploads", - "HeaderContinueWatching": "Weiterschauen", - "HeaderFavoriteAlbums": "Lieblingsalben", - "HeaderFavoriteArtists": "Interpreten Favoriten", - "HeaderFavoriteEpisodes": "Lieblingsepisoden", - "HeaderFavoriteShows": "Lieblingsserien", - "HeaderFavoriteSongs": "Lieder Favoriten", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Als Nächstes", - "HeaderRecordingGroups": "Aufnahme-Gruppen", - "HomeVideos": "Heimvideos", - "Inherit": "Übernehmen", - "ItemAddedWithName": "{0} wurde der Bibliothek hinzugefügt", - "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt", - "LabelIpAddressValue": "IP Adresse: {0}", - "LabelRunningTimeValue": "Laufzeit: {0}", - "Latest": "Neueste", - "MessageApplicationUpdated": "Jellyfin Server wurde auf den neusten Stand gebracht.", - "MessageApplicationUpdatedTo": "Jellyfin Server wurde auf Version {0} aktualisiert", - "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert", - "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert", - "MixedContent": "Gemischte Inhalte", - "Movies": "Filme", - "Music": "Musik", - "MusicVideos": "Musikvideos", - "NameInstallFailed": "{0} Installation fehlgeschlagen", - "NameSeasonNumber": "Staffel {0}", - "NameSeasonUnknown": "Staffel unbekannt", - "NewVersionIsAvailable": "Eine neue Version von Jellyfin Server steht zum Download bereit.", - "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verfügbar", - "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert", - "NotificationOptionAudioPlayback": "Audiowiedergabe gestartet", - "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt", - "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen", - "NotificationOptionGamePlayback": "Spielwiedergabe gestartet", - "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt", - "NotificationOptionInstallationFailed": "Installationsfehler", - "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugefügt", - "NotificationOptionPluginError": "Plugin Fehler", - "NotificationOptionPluginInstalled": "Plugin installiert", - "NotificationOptionPluginUninstalled": "Plugin deinstalliert", - "NotificationOptionPluginUpdateInstalled": "Pluginaktualisierung installiert", - "NotificationOptionServerRestartRequired": "Serverneustart notwendig", - "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen", - "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen", - "NotificationOptionVideoPlayback": "Videowiedergabe gestartet", - "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt", - "Photos": "Fotos", - "Playlists": "Wiedergabelisten", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} wurde installiert", - "PluginUninstalledWithName": "{0} wurde deinstalliert", - "PluginUpdatedWithName": "{0} wurde aktualisiert", - "ProviderValue": "Anbieter: {0}", - "ScheduledTaskFailedWithName": "{0} fehlgeschlagen", - "ScheduledTaskStartedWithName": "{0} gestartet", - "ServerNameNeedsToBeRestarted": "{0} muss neu gestartet werden", - "Shows": "Serien", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server startet, bitte versuche es gleich noch einmal.", - "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen für {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Untertitel heruntergeladen für {0}", - "Sync": "Synchronisation", - "System": "System", - "TvShows": "TV Sendungen", - "User": "Benutzer", - "UserCreatedWithName": "Benutzer {0} wurde erstellt", - "UserDeletedWithName": "Benutzer {0} wurde gelöscht", - "UserDownloadingItemWithValues": "{0} lädt {1} herunter", - "UserLockedOutWithName": "Benutzer {0} wurde ausgeschlossen", - "UserOfflineFromDevice": "{0} wurde getrennt von {1}", - "UserOnlineFromDevice": "{0} ist online von {1}", - "UserPasswordChangedWithName": "Das Passwort für Benutzer {0} wurde geändert", - "UserPolicyUpdatedWithName": "Benutzerrichtlinie wurde für {0} aktualisiert", - "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet", - "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet", - "ValueHasBeenAddedToLibrary": "{0} wurde ihrer Bibliothek hinzugefügt", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Alben", + "AppDeviceValues": "App: {0}, Gerät: {1}", + "Application": "Anwendung", + "Artists": "Interpreten", + "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert", + "Books": "Bücher", + "CameraImageUploadedFrom": "Ein neues Bild wurde hochgeladen von {0}", + "Channels": "Kanäle", + "ChapterNameValue": "Kapitel {0}", + "Collections": "Sammlungen", + "DeviceOfflineWithName": "{0} wurde getrennt", + "DeviceOnlineWithName": "{0} ist verbunden", + "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}", + "Favorites": "Favoriten", + "Folders": "Verzeichnisse", + "Games": "Spiele", + "Genres": "Genres", + "HeaderAlbumArtists": "Album-Künstler", + "HeaderCameraUploads": "Kamera Uploads", + "HeaderContinueWatching": "Weiterschauen", + "HeaderFavoriteAlbums": "Lieblingsalben", + "HeaderFavoriteArtists": "Interpreten Favoriten", + "HeaderFavoriteEpisodes": "Lieblingsepisoden", + "HeaderFavoriteShows": "Lieblingsserien", + "HeaderFavoriteSongs": "Lieder Favoriten", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Als Nächstes", + "HeaderRecordingGroups": "Aufnahme-Gruppen", + "HomeVideos": "Heimvideos", + "Inherit": "Übernehmen", + "ItemAddedWithName": "{0} wurde der Bibliothek hinzugefügt", + "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt", + "LabelIpAddressValue": "IP Adresse: {0}", + "LabelRunningTimeValue": "Laufzeit: {0}", + "Latest": "Neueste", + "MessageApplicationUpdated": "Jellyfin Server wurde auf den neusten Stand gebracht.", + "MessageApplicationUpdatedTo": "Jellyfin Server wurde auf Version {0} aktualisiert", + "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert", + "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert", + "MixedContent": "Gemischte Inhalte", + "Movies": "Filme", + "Music": "Musik", + "MusicVideos": "Musikvideos", + "NameInstallFailed": "{0} Installation fehlgeschlagen", + "NameSeasonNumber": "Staffel {0}", + "NameSeasonUnknown": "Staffel unbekannt", + "NewVersionIsAvailable": "Eine neue Version von Jellyfin Server steht zum Download bereit.", + "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verfügbar", + "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert", + "NotificationOptionAudioPlayback": "Audiowiedergabe gestartet", + "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt", + "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen", + "NotificationOptionGamePlayback": "Spielwiedergabe gestartet", + "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt", + "NotificationOptionInstallationFailed": "Installationsfehler", + "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugefügt", + "NotificationOptionPluginError": "Plugin Fehler", + "NotificationOptionPluginInstalled": "Plugin installiert", + "NotificationOptionPluginUninstalled": "Plugin deinstalliert", + "NotificationOptionPluginUpdateInstalled": "Pluginaktualisierung installiert", + "NotificationOptionServerRestartRequired": "Serverneustart notwendig", + "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen", + "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen", + "NotificationOptionVideoPlayback": "Videowiedergabe gestartet", + "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt", + "Photos": "Fotos", + "Playlists": "Wiedergabelisten", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} wurde installiert", + "PluginUninstalledWithName": "{0} wurde deinstalliert", + "PluginUpdatedWithName": "{0} wurde aktualisiert", + "ProviderValue": "Anbieter: {0}", + "ScheduledTaskFailedWithName": "{0} fehlgeschlagen", + "ScheduledTaskStartedWithName": "{0} gestartet", + "ServerNameNeedsToBeRestarted": "{0} muss neu gestartet werden", + "Shows": "Serien", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server startet, bitte versuche es gleich noch einmal.", + "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen für {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Untertitel heruntergeladen für {0}", + "Sync": "Synchronisation", + "System": "System", + "TvShows": "TV Sendungen", + "User": "Benutzer", + "UserCreatedWithName": "Benutzer {0} wurde erstellt", + "UserDeletedWithName": "Benutzer {0} wurde gelöscht", + "UserDownloadingItemWithValues": "{0} lädt {1} herunter", + "UserLockedOutWithName": "Benutzer {0} wurde ausgeschlossen", + "UserOfflineFromDevice": "{0} wurde getrennt von {1}", + "UserOnlineFromDevice": "{0} ist online von {1}", + "UserPasswordChangedWithName": "Das Passwort für Benutzer {0} wurde geändert", + "UserPolicyUpdatedWithName": "Benutzerrichtlinie wurde für {0} aktualisiert", + "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet", + "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet", + "ValueHasBeenAddedToLibrary": "{0} wurde ihrer Bibliothek hinzugefügt", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/el.json b/Emby.Server.Implementations/Localization/Core/el.json index 81903db8f4..ba687a089a 100644 --- a/Emby.Server.Implementations/Localization/Core/el.json +++ b/Emby.Server.Implementations/Localization/Core/el.json @@ -1,100 +1,100 @@ { - "Albums": "Άλμπουμ", - "AppDeviceValues": "Εφαρμογή: {0}, Συσκευή: {1}", - "Application": "Εφαρμογή", - "Artists": "Καλλιτέχνες", - "AuthenticationSucceededWithUserName": "{0} επιτυχείς σύνδεση", - "Books": "Βιβλία", - "CameraImageUploadedFrom": "Μια νέα εικόνα κάμερας έχει αποσταλεί από {0}", - "Channels": "Κανάλια", - "ChapterNameValue": "Κεφάλαιο {0}", - "Collections": "Συλλογές", - "DeviceOfflineWithName": "{0} αποσυνδέθηκε", - "DeviceOnlineWithName": "{0} συνδέθηκε", - "FailedLoginAttemptWithUserName": "Αποτυχημένη προσπάθεια σύνδεσης από {0}", - "Favorites": "Αγαπημένα", - "Folders": "Φάκελοι", - "Games": "Παιχνίδια", - "Genres": "Είδη", - "HeaderAlbumArtists": "Άλμπουμ Καλλιτεχνών", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Συνεχίστε να παρακολουθείτε", - "HeaderFavoriteAlbums": "Αγαπημένα Άλμπουμ", - "HeaderFavoriteArtists": "Αγαπημένοι Καλλιτέχνες", - "HeaderFavoriteEpisodes": "Αγαπημένα Επεισόδια", - "HeaderFavoriteShows": "Αγαπημένες Σειρές", - "HeaderFavoriteSongs": "Αγαπημένα Τραγούδια", - "HeaderLiveTV": "Ζωντανή Τηλεόραση", - "HeaderNextUp": "Επόμενο", - "HeaderRecordingGroups": "Γκρουπ Εγγραφών", - "HomeVideos": "Προσωπικά βίντεο", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} προστέθηκε στη βιβλιοθήκη", - "ItemRemovedWithName": "{0} διαγράφηκε από τη βιβλιοθήκη", - "LabelIpAddressValue": "Διεύθυνση IP: {0}", - "LabelRunningTimeValue": "Διάρκεια: {0}", - "Latest": "Πρόσφατα", - "MessageApplicationUpdated": "Ο Jellyfin Server έχει ενημερωθεί", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Η ενότητα {0} ρύθμισης παραμέτρων του server έχει ενημερωθεί", - "MessageServerConfigurationUpdated": "Η ρύθμιση παραμέτρων του server έχει ενημερωθεί", - "MixedContent": "Ανάμεικτο Περιεχόμενο", - "Movies": "Ταινίες", - "Music": "Μουσική", - "MusicVideos": "Μουσικά βίντεο", - "NameInstallFailed": "{0} η εγκατάσταση απέτυχε", - "NameSeasonNumber": "Κύκλος {0}", - "NameSeasonUnknown": "Άγνωστος Κύκλος", - "NewVersionIsAvailable": "Μια νέα έκδοση του Jellyfin Server είναι διαθέσιμη για λήψη.", - "NotificationOptionApplicationUpdateAvailable": "Διαθέσιμη ενημερωμένη έκδοση εφαρμογής", - "NotificationOptionApplicationUpdateInstalled": "Η ενημέρωση εφαρμογής εγκαταστάθηκε", - "NotificationOptionAudioPlayback": "Η αναπαραγωγή ήχου ξεκίνησε", - "NotificationOptionAudioPlaybackStopped": "Η αναπαραγωγή ήχου σταμάτησε", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Η αναπαραγωγή του παιχνιδιού ξεκίνησε", - "NotificationOptionGamePlaybackStopped": "Η αναπαραγωγή του παιχνιδιού σταμάτησε", - "NotificationOptionInstallationFailed": "Αποτυχία εγκατάστασης", - "NotificationOptionNewLibraryContent": "Προστέθηκε νέο περιεχόμενο", - "NotificationOptionPluginError": "Αποτυχία του plugin", - "NotificationOptionPluginInstalled": "Το plugin εγκαταστάθηκε", - "NotificationOptionPluginUninstalled": "Το plugin απεγκαταστάθηκε", - "NotificationOptionPluginUpdateInstalled": "Η αναβάθμιση του plugin εγκαταστάθηκε", - "NotificationOptionServerRestartRequired": "Απαιτείται επανεκκίνηση του server", - "NotificationOptionTaskFailed": "Αποτυχία προγραμματισμένης εργασίας", - "NotificationOptionUserLockedOut": "Ο χρήστης αποκλείστηκε", - "NotificationOptionVideoPlayback": "Η αναπαραγωγή βίντεο ξεκίνησε", - "NotificationOptionVideoPlaybackStopped": "Η αναπαραγωγή βίντεο σταμάτησε", - "Photos": "Φωτογραφίες", - "Playlists": "Λίστες αναπαραγωγής", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} εγκαταστήθηκε", - "PluginUninstalledWithName": "{0} έχει απεγκατασταθεί", - "PluginUpdatedWithName": "{0} έχει αναβαθμιστεί", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} αποτυχία", - "ScheduledTaskStartedWithName": "{0} ξεκίνησε", - "ServerNameNeedsToBeRestarted": "{0} χρειάζεται επανεκκίνηση", - "Shows": "Σειρές", - "Songs": "Τραγούδια", - "StartupEmbyServerIsLoading": "Ο Jellyfin Server φορτώνει. Παρακαλώ δοκιμάστε σε λίγο.", - "SubtitleDownloadFailureForItem": "Οι υπότιτλοι απέτυχαν να κατέβουν για {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Οι υπότιτλοι κατέβηκαν για {0}", - "Sync": "Συγχρονισμός", - "System": "Σύστημα", - "TvShows": "Τηλεοπτικές Σειρές", - "User": "Χρήστης", - "UserCreatedWithName": "Δημιουργήθηκε ο χρήστης {0}", - "UserDeletedWithName": "Ο χρήστης {0} έχει διαγραφεί", - "UserDownloadingItemWithValues": "{0} κατεβάζει {1}", - "UserLockedOutWithName": "Ο χρήστης {0} αποκλείστηκε", - "UserOfflineFromDevice": "{0} αποσυνδέθηκε από {1}", - "UserOnlineFromDevice": "{0} είναι online απο {1}", - "UserPasswordChangedWithName": "Ο κωδικός του χρήστη {0} έχει αλλάξει", - "UserPolicyUpdatedWithName": "Η πολιτική χρήστη έχει ενημερωθεί για {0}", - "UserStartedPlayingItemWithValues": "{0} παίζει {1} σε {2}", - "UserStoppedPlayingItemWithValues": "{0} τελείωσε να παίζει {1} σε {2}", - "ValueHasBeenAddedToLibrary": "{0} προστέθηκαν στη βιβλιοθήκη πολυμέσων σας", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Έκδοση {0}" + "Albums": "Άλμπουμ", + "AppDeviceValues": "Εφαρμογή: {0}, Συσκευή: {1}", + "Application": "Εφαρμογή", + "Artists": "Καλλιτέχνες", + "AuthenticationSucceededWithUserName": "{0} επιτυχείς σύνδεση", + "Books": "Βιβλία", + "CameraImageUploadedFrom": "Μια νέα εικόνα κάμερας έχει αποσταλεί από {0}", + "Channels": "Κανάλια", + "ChapterNameValue": "Κεφάλαιο {0}", + "Collections": "Συλλογές", + "DeviceOfflineWithName": "{0} αποσυνδέθηκε", + "DeviceOnlineWithName": "{0} συνδέθηκε", + "FailedLoginAttemptWithUserName": "Αποτυχημένη προσπάθεια σύνδεσης από {0}", + "Favorites": "Αγαπημένα", + "Folders": "Φάκελοι", + "Games": "Παιχνίδια", + "Genres": "Είδη", + "HeaderAlbumArtists": "Άλμπουμ Καλλιτεχνών", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Συνεχίστε να παρακολουθείτε", + "HeaderFavoriteAlbums": "Αγαπημένα Άλμπουμ", + "HeaderFavoriteArtists": "Αγαπημένοι Καλλιτέχνες", + "HeaderFavoriteEpisodes": "Αγαπημένα Επεισόδια", + "HeaderFavoriteShows": "Αγαπημένες Σειρές", + "HeaderFavoriteSongs": "Αγαπημένα Τραγούδια", + "HeaderLiveTV": "Ζωντανή Τηλεόραση", + "HeaderNextUp": "Επόμενο", + "HeaderRecordingGroups": "Γκρουπ Εγγραφών", + "HomeVideos": "Προσωπικά βίντεο", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} προστέθηκε στη βιβλιοθήκη", + "ItemRemovedWithName": "{0} διαγράφηκε από τη βιβλιοθήκη", + "LabelIpAddressValue": "Διεύθυνση IP: {0}", + "LabelRunningTimeValue": "Διάρκεια: {0}", + "Latest": "Πρόσφατα", + "MessageApplicationUpdated": "Ο Jellyfin Server έχει ενημερωθεί", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Η ενότητα {0} ρύθμισης παραμέτρων του server έχει ενημερωθεί", + "MessageServerConfigurationUpdated": "Η ρύθμιση παραμέτρων του server έχει ενημερωθεί", + "MixedContent": "Ανάμεικτο Περιεχόμενο", + "Movies": "Ταινίες", + "Music": "Μουσική", + "MusicVideos": "Μουσικά βίντεο", + "NameInstallFailed": "{0} η εγκατάσταση απέτυχε", + "NameSeasonNumber": "Κύκλος {0}", + "NameSeasonUnknown": "Άγνωστος Κύκλος", + "NewVersionIsAvailable": "Μια νέα έκδοση του Jellyfin Server είναι διαθέσιμη για λήψη.", + "NotificationOptionApplicationUpdateAvailable": "Διαθέσιμη ενημερωμένη έκδοση εφαρμογής", + "NotificationOptionApplicationUpdateInstalled": "Η ενημέρωση εφαρμογής εγκαταστάθηκε", + "NotificationOptionAudioPlayback": "Η αναπαραγωγή ήχου ξεκίνησε", + "NotificationOptionAudioPlaybackStopped": "Η αναπαραγωγή ήχου σταμάτησε", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Η αναπαραγωγή του παιχνιδιού ξεκίνησε", + "NotificationOptionGamePlaybackStopped": "Η αναπαραγωγή του παιχνιδιού σταμάτησε", + "NotificationOptionInstallationFailed": "Αποτυχία εγκατάστασης", + "NotificationOptionNewLibraryContent": "Προστέθηκε νέο περιεχόμενο", + "NotificationOptionPluginError": "Αποτυχία του plugin", + "NotificationOptionPluginInstalled": "Το plugin εγκαταστάθηκε", + "NotificationOptionPluginUninstalled": "Το plugin απεγκαταστάθηκε", + "NotificationOptionPluginUpdateInstalled": "Η αναβάθμιση του plugin εγκαταστάθηκε", + "NotificationOptionServerRestartRequired": "Απαιτείται επανεκκίνηση του server", + "NotificationOptionTaskFailed": "Αποτυχία προγραμματισμένης εργασίας", + "NotificationOptionUserLockedOut": "Ο χρήστης αποκλείστηκε", + "NotificationOptionVideoPlayback": "Η αναπαραγωγή βίντεο ξεκίνησε", + "NotificationOptionVideoPlaybackStopped": "Η αναπαραγωγή βίντεο σταμάτησε", + "Photos": "Φωτογραφίες", + "Playlists": "Λίστες αναπαραγωγής", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} εγκαταστήθηκε", + "PluginUninstalledWithName": "{0} έχει απεγκατασταθεί", + "PluginUpdatedWithName": "{0} έχει αναβαθμιστεί", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} αποτυχία", + "ScheduledTaskStartedWithName": "{0} ξεκίνησε", + "ServerNameNeedsToBeRestarted": "{0} χρειάζεται επανεκκίνηση", + "Shows": "Σειρές", + "Songs": "Τραγούδια", + "StartupEmbyServerIsLoading": "Ο Jellyfin Server φορτώνει. Παρακαλώ δοκιμάστε σε λίγο.", + "SubtitleDownloadFailureForItem": "Οι υπότιτλοι απέτυχαν να κατέβουν για {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Οι υπότιτλοι κατέβηκαν για {0}", + "Sync": "Συγχρονισμός", + "System": "Σύστημα", + "TvShows": "Τηλεοπτικές Σειρές", + "User": "Χρήστης", + "UserCreatedWithName": "Δημιουργήθηκε ο χρήστης {0}", + "UserDeletedWithName": "Ο χρήστης {0} έχει διαγραφεί", + "UserDownloadingItemWithValues": "{0} κατεβάζει {1}", + "UserLockedOutWithName": "Ο χρήστης {0} αποκλείστηκε", + "UserOfflineFromDevice": "{0} αποσυνδέθηκε από {1}", + "UserOnlineFromDevice": "{0} είναι online απο {1}", + "UserPasswordChangedWithName": "Ο κωδικός του χρήστη {0} έχει αλλάξει", + "UserPolicyUpdatedWithName": "Η πολιτική χρήστη έχει ενημερωθεί για {0}", + "UserStartedPlayingItemWithValues": "{0} παίζει {1} σε {2}", + "UserStoppedPlayingItemWithValues": "{0} τελείωσε να παίζει {1} σε {2}", + "ValueHasBeenAddedToLibrary": "{0} προστέθηκαν στη βιβλιοθήκη πολυμέσων σας", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Έκδοση {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/en-GB.json b/Emby.Server.Implementations/Localization/Core/en-GB.json index b16afea5bc..20d397a1a0 100644 --- a/Emby.Server.Implementations/Localization/Core/en-GB.json +++ b/Emby.Server.Implementations/Localization/Core/en-GB.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favourites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favourite Albums", - "HeaderFavoriteArtists": "Favourite Artists", - "HeaderFavoriteEpisodes": "Favourite Episodes", - "HeaderFavoriteShows": "Favourite Shows", - "HeaderFavoriteSongs": "Favourite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "IP address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favourites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favourite Albums", + "HeaderFavoriteArtists": "Favourite Artists", + "HeaderFavoriteEpisodes": "Favourite Episodes", + "HeaderFavoriteShows": "Favourite Shows", + "HeaderFavoriteSongs": "Favourite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "IP address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/en-US.json b/Emby.Server.Implementations/Localization/Core/en-US.json index b90e8b593f..69c8bf03c2 100644 --- a/Emby.Server.Implementations/Localization/Core/en-US.json +++ b/Emby.Server.Implementations/Localization/Core/en-US.json @@ -1,99 +1,99 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/es-AR.json b/Emby.Server.Implementations/Localization/Core/es-AR.json index ae74d6f7eb..aaaf097882 100644 --- a/Emby.Server.Implementations/Localization/Core/es-AR.json +++ b/Emby.Server.Implementations/Localization/Core/es-AR.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/es-MX.json b/Emby.Server.Implementations/Localization/Core/es-MX.json index 4fa29a3987..2ba9c8c7ab 100644 --- a/Emby.Server.Implementations/Localization/Core/es-MX.json +++ b/Emby.Server.Implementations/Localization/Core/es-MX.json @@ -1,100 +1,100 @@ { - "Albums": "Álbumes", - "AppDeviceValues": "App: {0}, Dispositivo: {1}", - "Application": "Aplicación", - "Artists": "Artistas", - "AuthenticationSucceededWithUserName": "{0} autenticado con éxito", - "Books": "Libros", - "CameraImageUploadedFrom": "Una nueva imagen de cámara ha sido subida desde {0}", - "Channels": "Canales", - "ChapterNameValue": "Capítulo {0}", - "Collections": "Colecciones", - "DeviceOfflineWithName": "{0} se ha desconectado", - "DeviceOnlineWithName": "{0} está conectado", - "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesión de {0}", - "Favorites": "Favoritos", - "Folders": "Carpetas", - "Games": "Juegos", - "Genres": "Géneros", - "HeaderAlbumArtists": "Artistas del Álbum", - "HeaderCameraUploads": "Subidos desde Camara", - "HeaderContinueWatching": "Continuar Viendo", - "HeaderFavoriteAlbums": "Álbumes Favoritos", - "HeaderFavoriteArtists": "Artistas Favoritos", - "HeaderFavoriteEpisodes": "Episodios Preferidos", - "HeaderFavoriteShows": "Programas Preferidos", - "HeaderFavoriteSongs": "Canciones Favoritas", - "HeaderLiveTV": "TV en Vivo", - "HeaderNextUp": "A Continuación", - "HeaderRecordingGroups": "Grupos de Grabaciones", - "HomeVideos": "Videos caseros", - "Inherit": "Heredar", - "ItemAddedWithName": "{0} fue agregado a la biblioteca", - "ItemRemovedWithName": "{0} fue removido de la biblioteca", - "LabelIpAddressValue": "Dirección IP: {0}", - "LabelRunningTimeValue": "Duración: {0}", - "Latest": "Recientes", - "MessageApplicationUpdated": "El servidor Jellyfin ha sido actualizado", - "MessageApplicationUpdatedTo": "El servidor Jellyfin ha sido actualizado a {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la sección {0} de la configuración del servidor", - "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor", - "MixedContent": "Contenido mezclado", - "Movies": "Películas", - "Music": "Música", - "MusicVideos": "Videos musicales", - "NameInstallFailed": "{0} instalación fallida", - "NameSeasonNumber": "Temporada {0}", - "NameSeasonUnknown": "Temporada Desconocida", - "NewVersionIsAvailable": "Una nueva versión del Servidor Jellyfin está disponible para descargar.", - "NotificationOptionApplicationUpdateAvailable": "Actualización de aplicación disponible", - "NotificationOptionApplicationUpdateInstalled": "Actualización de aplicación instalada", - "NotificationOptionAudioPlayback": "Reproducción de audio iniciada", - "NotificationOptionAudioPlaybackStopped": "Reproducción de audio detenida", - "NotificationOptionCameraImageUploaded": "Imagen de la cámara subida", - "NotificationOptionGamePlayback": "Ejecución de juego iniciada", - "NotificationOptionGamePlaybackStopped": "Ejecución de juego detenida", - "NotificationOptionInstallationFailed": "Falla de instalación", - "NotificationOptionNewLibraryContent": "Nuevo contenido agregado", - "NotificationOptionPluginError": "Falla de complemento", - "NotificationOptionPluginInstalled": "Complemento instalado", - "NotificationOptionPluginUninstalled": "Complemento desinstalado", - "NotificationOptionPluginUpdateInstalled": "Actualización de complemento instalada", - "NotificationOptionServerRestartRequired": "Se necesita reiniciar el Servidor", - "NotificationOptionTaskFailed": "Falla de tarea programada", - "NotificationOptionUserLockedOut": "Usuario bloqueado", - "NotificationOptionVideoPlayback": "Reproducción de video iniciada", - "NotificationOptionVideoPlaybackStopped": "Reproducción de video detenida", - "Photos": "Fotos", - "Playlists": "Listas de reproducción", - "Plugin": "Complemento", - "PluginInstalledWithName": "{0} fue instalado", - "PluginUninstalledWithName": "{0} fue desinstalado", - "PluginUpdatedWithName": "{0} fue actualizado", - "ProviderValue": "Proveedor: {0}", - "ScheduledTaskFailedWithName": "{0} falló", - "ScheduledTaskStartedWithName": "{0} Iniciado", - "ServerNameNeedsToBeRestarted": "{0} debe ser reiniciado", - "Shows": "Programas", - "Songs": "Canciones", - "StartupEmbyServerIsLoading": "El servidor Jellyfin esta cargando. Por favor intente de nuevo dentro de poco.", - "SubtitleDownloadFailureForItem": "Falló la descarga de subtítulos para {0}", - "SubtitleDownloadFailureFromForItem": "Falló la descarga de subtitulos desde {0} para {1}", - "SubtitlesDownloadedForItem": "Subtítulos descargados para {0}", - "Sync": "Sincronizar", - "System": "Sistema", - "TvShows": "Programas de TV", - "User": "Usuario", - "UserCreatedWithName": "Se ha creado el usuario {0}", - "UserDeletedWithName": "Se ha eliminado el usuario {0}", - "UserDownloadingItemWithValues": "{0} esta descargando {1}", - "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", - "UserOfflineFromDevice": "{0} se ha desconectado desde {1}", - "UserOnlineFromDevice": "{0} está en línea desde {1}", - "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}", - "UserPolicyUpdatedWithName": "Las política de usuario ha sido actualizada por {0}", - "UserStartedPlayingItemWithValues": "{0} está reproduciéndose {1} en {2}", - "UserStoppedPlayingItemWithValues": "{0} ha terminado de reproducirse {1} en {2}", - "ValueHasBeenAddedToLibrary": "{0} se han añadido a su biblioteca de medios", - "ValueSpecialEpisodeName": "Especial - {0}", - "VersionNumber": "Versión {0}" + "Albums": "Álbumes", + "AppDeviceValues": "App: {0}, Dispositivo: {1}", + "Application": "Aplicación", + "Artists": "Artistas", + "AuthenticationSucceededWithUserName": "{0} autenticado con éxito", + "Books": "Libros", + "CameraImageUploadedFrom": "Una nueva imagen de cámara ha sido subida desde {0}", + "Channels": "Canales", + "ChapterNameValue": "Capítulo {0}", + "Collections": "Colecciones", + "DeviceOfflineWithName": "{0} se ha desconectado", + "DeviceOnlineWithName": "{0} está conectado", + "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesión de {0}", + "Favorites": "Favoritos", + "Folders": "Carpetas", + "Games": "Juegos", + "Genres": "Géneros", + "HeaderAlbumArtists": "Artistas del Álbum", + "HeaderCameraUploads": "Subidos desde Camara", + "HeaderContinueWatching": "Continuar Viendo", + "HeaderFavoriteAlbums": "Álbumes Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteEpisodes": "Episodios Preferidos", + "HeaderFavoriteShows": "Programas Preferidos", + "HeaderFavoriteSongs": "Canciones Favoritas", + "HeaderLiveTV": "TV en Vivo", + "HeaderNextUp": "A Continuación", + "HeaderRecordingGroups": "Grupos de Grabaciones", + "HomeVideos": "Videos caseros", + "Inherit": "Heredar", + "ItemAddedWithName": "{0} fue agregado a la biblioteca", + "ItemRemovedWithName": "{0} fue removido de la biblioteca", + "LabelIpAddressValue": "Dirección IP: {0}", + "LabelRunningTimeValue": "Duración: {0}", + "Latest": "Recientes", + "MessageApplicationUpdated": "El servidor Jellyfin ha sido actualizado", + "MessageApplicationUpdatedTo": "El servidor Jellyfin ha sido actualizado a {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la sección {0} de la configuración del servidor", + "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor", + "MixedContent": "Contenido mezclado", + "Movies": "Películas", + "Music": "Música", + "MusicVideos": "Videos musicales", + "NameInstallFailed": "{0} instalación fallida", + "NameSeasonNumber": "Temporada {0}", + "NameSeasonUnknown": "Temporada Desconocida", + "NewVersionIsAvailable": "Una nueva versión del Servidor Jellyfin está disponible para descargar.", + "NotificationOptionApplicationUpdateAvailable": "Actualización de aplicación disponible", + "NotificationOptionApplicationUpdateInstalled": "Actualización de aplicación instalada", + "NotificationOptionAudioPlayback": "Reproducción de audio iniciada", + "NotificationOptionAudioPlaybackStopped": "Reproducción de audio detenida", + "NotificationOptionCameraImageUploaded": "Imagen de la cámara subida", + "NotificationOptionGamePlayback": "Ejecución de juego iniciada", + "NotificationOptionGamePlaybackStopped": "Ejecución de juego detenida", + "NotificationOptionInstallationFailed": "Falla de instalación", + "NotificationOptionNewLibraryContent": "Nuevo contenido agregado", + "NotificationOptionPluginError": "Falla de complemento", + "NotificationOptionPluginInstalled": "Complemento instalado", + "NotificationOptionPluginUninstalled": "Complemento desinstalado", + "NotificationOptionPluginUpdateInstalled": "Actualización de complemento instalada", + "NotificationOptionServerRestartRequired": "Se necesita reiniciar el Servidor", + "NotificationOptionTaskFailed": "Falla de tarea programada", + "NotificationOptionUserLockedOut": "Usuario bloqueado", + "NotificationOptionVideoPlayback": "Reproducción de video iniciada", + "NotificationOptionVideoPlaybackStopped": "Reproducción de video detenida", + "Photos": "Fotos", + "Playlists": "Listas de reproducción", + "Plugin": "Complemento", + "PluginInstalledWithName": "{0} fue instalado", + "PluginUninstalledWithName": "{0} fue desinstalado", + "PluginUpdatedWithName": "{0} fue actualizado", + "ProviderValue": "Proveedor: {0}", + "ScheduledTaskFailedWithName": "{0} falló", + "ScheduledTaskStartedWithName": "{0} Iniciado", + "ServerNameNeedsToBeRestarted": "{0} debe ser reiniciado", + "Shows": "Programas", + "Songs": "Canciones", + "StartupEmbyServerIsLoading": "El servidor Jellyfin esta cargando. Por favor intente de nuevo dentro de poco.", + "SubtitleDownloadFailureForItem": "Falló la descarga de subtítulos para {0}", + "SubtitleDownloadFailureFromForItem": "Falló la descarga de subtitulos desde {0} para {1}", + "SubtitlesDownloadedForItem": "Subtítulos descargados para {0}", + "Sync": "Sincronizar", + "System": "Sistema", + "TvShows": "Programas de TV", + "User": "Usuario", + "UserCreatedWithName": "Se ha creado el usuario {0}", + "UserDeletedWithName": "Se ha eliminado el usuario {0}", + "UserDownloadingItemWithValues": "{0} esta descargando {1}", + "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", + "UserOfflineFromDevice": "{0} se ha desconectado desde {1}", + "UserOnlineFromDevice": "{0} está en línea desde {1}", + "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}", + "UserPolicyUpdatedWithName": "Las política de usuario ha sido actualizada por {0}", + "UserStartedPlayingItemWithValues": "{0} está reproduciéndose {1} en {2}", + "UserStoppedPlayingItemWithValues": "{0} ha terminado de reproducirse {1} en {2}", + "ValueHasBeenAddedToLibrary": "{0} se han añadido a su biblioteca de medios", + "ValueSpecialEpisodeName": "Especial - {0}", + "VersionNumber": "Versión {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/es.json b/Emby.Server.Implementations/Localization/Core/es.json index ad6a32a0e8..38a2823827 100644 --- a/Emby.Server.Implementations/Localization/Core/es.json +++ b/Emby.Server.Implementations/Localization/Core/es.json @@ -1,100 +1,100 @@ { - "Albums": "Álbumes", - "AppDeviceValues": "Aplicación: {0}, Dispositivo: {1}", - "Application": "Aplicación", - "Artists": "Artistas", - "AuthenticationSucceededWithUserName": "{0} autenticado correctamente", - "Books": "Libros", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Canales", - "ChapterNameValue": "Capítulo {0}", - "Collections": "Colecciones", - "DeviceOfflineWithName": "{0} se ha desconectado", - "DeviceOnlineWithName": "{0} está conectado", - "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesión a partir de {0}", - "Favorites": "Favoritos", - "Folders": "Carpetas", - "Games": "Juegos", - "Genres": "Géneros", - "HeaderAlbumArtists": "Artistas del Álbum", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continuar viendo", - "HeaderFavoriteAlbums": "Álbumes favoritos", - "HeaderFavoriteArtists": "Artistas favoritos", - "HeaderFavoriteEpisodes": "Episodios favoritos", - "HeaderFavoriteShows": "Programas favoritos", - "HeaderFavoriteSongs": "Canciones favoritas", - "HeaderLiveTV": "TV en vivo", - "HeaderNextUp": "Siguiendo", - "HeaderRecordingGroups": "Grupos de grabación", - "HomeVideos": "Vídeos de inicio", - "Inherit": "Heredar", - "ItemAddedWithName": "{0} se ha añadido a la biblioteca", - "ItemRemovedWithName": "{0} se elimina de la biblioteca", - "LabelIpAddressValue": "Dirección IP: {0}", - "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}", - "Latest": "Últimos", - "MessageApplicationUpdated": "Se ha actualizado el servidor Jellyfin", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "La sección de configuración del servidor {0} ha sido actualizado", - "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor", - "MixedContent": "Contenido mixto", - "Movies": "Peliculas", - "Music": "Música", - "MusicVideos": "Videos musicales", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Temporada {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Actualización de la aplicación disponible", - "NotificationOptionApplicationUpdateInstalled": "Actualización de la aplicación instalada", - "NotificationOptionAudioPlayback": "Se inició la reproducción de audio", - "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducción de audio", - "NotificationOptionCameraImageUploaded": "Imagen de la cámara cargada", - "NotificationOptionGamePlayback": "Se inició la reproducción del juego", - "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducción del juego", - "NotificationOptionInstallationFailed": "Error de instalación", - "NotificationOptionNewLibraryContent": "Nuevo contenido añadido", - "NotificationOptionPluginError": "Error en plugin", - "NotificationOptionPluginInstalled": "Plugin instalado", - "NotificationOptionPluginUninstalled": "Plugin desinstalado", - "NotificationOptionPluginUpdateInstalled": "Actualización del complemento instalada", - "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor", - "NotificationOptionTaskFailed": "Error de tarea programada", - "NotificationOptionUserLockedOut": "Usuario bloqueado", - "NotificationOptionVideoPlayback": "Se inició la reproducción de vídeo", - "NotificationOptionVideoPlaybackStopped": "Reproducción de vídeo detenida", - "Photos": "Fotos", - "Playlists": "Listas reproducción", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} se ha instalado", - "PluginUninstalledWithName": "{0} se ha desinstalado", - "PluginUpdatedWithName": "{0} se actualizó", - "ProviderValue": "Proveedor: {0}", - "ScheduledTaskFailedWithName": "{0} falló", - "ScheduledTaskStartedWithName": "{0} iniciada", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Canciones", - "StartupEmbyServerIsLoading": "Jellyfin Server se está cargando. Vuelve a intentarlo en breve.", - "SubtitleDownloadFailureForItem": "Error al descargar subtítulos para {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Descargar subtítulos para {0}", - "Sync": "Sincronizar", - "System": "Sistema", - "TvShows": "Series TV", - "User": "Usuario", - "UserCreatedWithName": "El usuario {0} ha sido creado", - "UserDeletedWithName": "El usuario {0} ha sido borrado", - "UserDownloadingItemWithValues": "{0} está descargando {1}", - "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", - "UserOfflineFromDevice": "{0} se ha desconectado de {1}", - "UserOnlineFromDevice": "{0} está en línea desde {1}", - "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} ha comenzado reproducir {1}", - "UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Especial - {0}", - "VersionNumber": "Versión {0}" + "Albums": "Álbumes", + "AppDeviceValues": "Aplicación: {0}, Dispositivo: {1}", + "Application": "Aplicación", + "Artists": "Artistas", + "AuthenticationSucceededWithUserName": "{0} autenticado correctamente", + "Books": "Libros", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Canales", + "ChapterNameValue": "Capítulo {0}", + "Collections": "Colecciones", + "DeviceOfflineWithName": "{0} se ha desconectado", + "DeviceOnlineWithName": "{0} está conectado", + "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesión a partir de {0}", + "Favorites": "Favoritos", + "Folders": "Carpetas", + "Games": "Juegos", + "Genres": "Géneros", + "HeaderAlbumArtists": "Artistas del Álbum", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continuar viendo", + "HeaderFavoriteAlbums": "Álbumes favoritos", + "HeaderFavoriteArtists": "Artistas favoritos", + "HeaderFavoriteEpisodes": "Episodios favoritos", + "HeaderFavoriteShows": "Programas favoritos", + "HeaderFavoriteSongs": "Canciones favoritas", + "HeaderLiveTV": "TV en vivo", + "HeaderNextUp": "Siguiendo", + "HeaderRecordingGroups": "Grupos de grabación", + "HomeVideos": "Vídeos de inicio", + "Inherit": "Heredar", + "ItemAddedWithName": "{0} se ha añadido a la biblioteca", + "ItemRemovedWithName": "{0} se elimina de la biblioteca", + "LabelIpAddressValue": "Dirección IP: {0}", + "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}", + "Latest": "Últimos", + "MessageApplicationUpdated": "Se ha actualizado el servidor Jellyfin", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "La sección de configuración del servidor {0} ha sido actualizado", + "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor", + "MixedContent": "Contenido mixto", + "Movies": "Peliculas", + "Music": "Música", + "MusicVideos": "Videos musicales", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Temporada {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Actualización de la aplicación disponible", + "NotificationOptionApplicationUpdateInstalled": "Actualización de la aplicación instalada", + "NotificationOptionAudioPlayback": "Se inició la reproducción de audio", + "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducción de audio", + "NotificationOptionCameraImageUploaded": "Imagen de la cámara cargada", + "NotificationOptionGamePlayback": "Se inició la reproducción del juego", + "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducción del juego", + "NotificationOptionInstallationFailed": "Error de instalación", + "NotificationOptionNewLibraryContent": "Nuevo contenido añadido", + "NotificationOptionPluginError": "Error en plugin", + "NotificationOptionPluginInstalled": "Plugin instalado", + "NotificationOptionPluginUninstalled": "Plugin desinstalado", + "NotificationOptionPluginUpdateInstalled": "Actualización del complemento instalada", + "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor", + "NotificationOptionTaskFailed": "Error de tarea programada", + "NotificationOptionUserLockedOut": "Usuario bloqueado", + "NotificationOptionVideoPlayback": "Se inició la reproducción de vídeo", + "NotificationOptionVideoPlaybackStopped": "Reproducción de vídeo detenida", + "Photos": "Fotos", + "Playlists": "Listas reproducción", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} se ha instalado", + "PluginUninstalledWithName": "{0} se ha desinstalado", + "PluginUpdatedWithName": "{0} se actualizó", + "ProviderValue": "Proveedor: {0}", + "ScheduledTaskFailedWithName": "{0} falló", + "ScheduledTaskStartedWithName": "{0} iniciada", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Canciones", + "StartupEmbyServerIsLoading": "Jellyfin Server se está cargando. Vuelve a intentarlo en breve.", + "SubtitleDownloadFailureForItem": "Error al descargar subtítulos para {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Descargar subtítulos para {0}", + "Sync": "Sincronizar", + "System": "Sistema", + "TvShows": "Series TV", + "User": "Usuario", + "UserCreatedWithName": "El usuario {0} ha sido creado", + "UserDeletedWithName": "El usuario {0} ha sido borrado", + "UserDownloadingItemWithValues": "{0} está descargando {1}", + "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", + "UserOfflineFromDevice": "{0} se ha desconectado de {1}", + "UserOnlineFromDevice": "{0} está en línea desde {1}", + "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} ha comenzado reproducir {1}", + "UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Especial - {0}", + "VersionNumber": "Versión {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/fa.json b/Emby.Server.Implementations/Localization/Core/fa.json index 08a5f185da..1d7bc5fe82 100644 --- a/Emby.Server.Implementations/Localization/Core/fa.json +++ b/Emby.Server.Implementations/Localization/Core/fa.json @@ -1,100 +1,100 @@ { - "Albums": "آلبوم ها", - "AppDeviceValues": "برنامه: {0} ، دستگاه: {1}", - "Application": "برنامه", - "Artists": "هنرمندان", - "AuthenticationSucceededWithUserName": "{0} با موفقیت تایید اعتبار شد", - "Books": "کتاب ها", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "کانال ها", - "ChapterNameValue": "فصل {0}", - "Collections": "کلکسیون ها", - "DeviceOfflineWithName": "ارتباط {0} قطع شد", - "DeviceOnlineWithName": "{0} متصل شده", - "FailedLoginAttemptWithUserName": "تلاش برای ورود از {0} ناموفق بود", - "Favorites": "مورد علاقه ها", - "Folders": "پوشه ها", - "Games": "بازی ها", - "Genres": "ژانرها", - "HeaderAlbumArtists": "هنرمندان آلبوم", - "HeaderCameraUploads": "آپلودهای دوربین", - "HeaderContinueWatching": "ادامه تماشا", - "HeaderFavoriteAlbums": "آلبوم های مورد علاقه", - "HeaderFavoriteArtists": "هنرمندان مورد علاقه", - "HeaderFavoriteEpisodes": "قسمت های مورد علاقه", - "HeaderFavoriteShows": "سریال های مورد علاقه", - "HeaderFavoriteSongs": "آهنگ های مورد علاقه", - "HeaderLiveTV": "پخش زنده تلویزیون", - "HeaderNextUp": "بعدی چیه", - "HeaderRecordingGroups": "گروه های ضبط", - "HomeVideos": "ویدیوهای خانگی", - "Inherit": "به ارث برده", - "ItemAddedWithName": "{0} به کتابخانه افزوده شد", - "ItemRemovedWithName": "{0} از کتابخانه حذف شد", - "LabelIpAddressValue": "آدرس آی پی: {0}", - "LabelRunningTimeValue": "زمان اجرا: {0}", - "Latest": "آخرین", - "MessageApplicationUpdated": "سرور Jellyfin بروزرسانی شد", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "پکربندی بخش {0} سرور بروزرسانی شد", - "MessageServerConfigurationUpdated": "پیکربندی سرور بروزرسانی شد", - "MixedContent": "محتوای درهم", - "Movies": "فیلم های سینمایی", - "Music": "موسیقی", - "MusicVideos": "موزیک ویدیوها", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "فصل {0}", - "NameSeasonUnknown": "فصل های ناشناخته", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "بروزرسانی برنامه موجود است", - "NotificationOptionApplicationUpdateInstalled": "بروزرسانی برنامه نصب شد", - "NotificationOptionAudioPlayback": "پخش صدا آغاز شد", - "NotificationOptionAudioPlaybackStopped": "پخش صدا متوقف شد", - "NotificationOptionCameraImageUploaded": "تصاویر دوربین آپلود شد", - "NotificationOptionGamePlayback": "پخش بازی آغاز شد", - "NotificationOptionGamePlaybackStopped": "پخش بازی متوقف شد", - "NotificationOptionInstallationFailed": "شکست نصب", - "NotificationOptionNewLibraryContent": "محتوای جدید افزوده شد", - "NotificationOptionPluginError": "خرابی افزونه", - "NotificationOptionPluginInstalled": "افزونه نصب شد", - "NotificationOptionPluginUninstalled": "افزونه حذف شد", - "NotificationOptionPluginUpdateInstalled": "بروزرسانی افزونه نصب شد", - "NotificationOptionServerRestartRequired": "شروع مجدد سرور نیاز است", - "NotificationOptionTaskFailed": "شکست وظیفه برنامه ریزی شده", - "NotificationOptionUserLockedOut": "کاربر از سیستم خارج شد", - "NotificationOptionVideoPlayback": "پخش ویدیو آغاز شد", - "NotificationOptionVideoPlaybackStopped": "پخش ویدیو متوقف شد", - "Photos": "عکس ها", - "Playlists": "لیست های پخش", - "Plugin": "افزونه", - "PluginInstalledWithName": "{0} نصب شد", - "PluginUninstalledWithName": "{0} حذف شد", - "PluginUpdatedWithName": "{0} آپدیت شد", - "ProviderValue": "ارائه دهنده: {0}", - "ScheduledTaskFailedWithName": "{0} ناموفق بود", - "ScheduledTaskStartedWithName": "{0} شروع شد", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "سریال ها", - "Songs": "آهنگ ها", - "StartupEmbyServerIsLoading": "سرور Jellyfin در حال بارگیری است. لطفا کمی بعد دوباره تلاش کنید.", - "SubtitleDownloadFailureForItem": "دانلود زیرنویس برای {0} ناموفق بود", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "زیرنویس {0} دانلود شد", - "Sync": "همگامسازی", - "System": "سیستم", - "TvShows": "سریال های تلویزیونی", - "User": "کاربر", - "UserCreatedWithName": "کاربر {0} ایجاد شد", - "UserDeletedWithName": "کاربر {0} حذف شد", - "UserDownloadingItemWithValues": "{0} در حال دانلود است {1}", - "UserLockedOutWithName": "کاربر {0} از سیستم خارج شد", - "UserOfflineFromDevice": "ارتباط {0} از {1} قطع شد", - "UserOnlineFromDevice": "{0}از {1} آنلاین میباشد", - "UserPasswordChangedWithName": "رمز برای کاربر {0} تغییر یافت", - "UserPolicyUpdatedWithName": "سیاست کاربری برای {0} بروزرسانی شد", - "UserStartedPlayingItemWithValues": "{0} شروع به پخش {1} کرد", - "UserStoppedPlayingItemWithValues": "{0} پخش {1} را متوقف کرد", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "ویژه- {0}", - "VersionNumber": "نسخه {0}" + "Albums": "آلبوم ها", + "AppDeviceValues": "برنامه: {0} ، دستگاه: {1}", + "Application": "برنامه", + "Artists": "هنرمندان", + "AuthenticationSucceededWithUserName": "{0} با موفقیت تایید اعتبار شد", + "Books": "کتاب ها", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "کانال ها", + "ChapterNameValue": "فصل {0}", + "Collections": "کلکسیون ها", + "DeviceOfflineWithName": "ارتباط {0} قطع شد", + "DeviceOnlineWithName": "{0} متصل شده", + "FailedLoginAttemptWithUserName": "تلاش برای ورود از {0} ناموفق بود", + "Favorites": "مورد علاقه ها", + "Folders": "پوشه ها", + "Games": "بازی ها", + "Genres": "ژانرها", + "HeaderAlbumArtists": "هنرمندان آلبوم", + "HeaderCameraUploads": "آپلودهای دوربین", + "HeaderContinueWatching": "ادامه تماشا", + "HeaderFavoriteAlbums": "آلبوم های مورد علاقه", + "HeaderFavoriteArtists": "هنرمندان مورد علاقه", + "HeaderFavoriteEpisodes": "قسمت های مورد علاقه", + "HeaderFavoriteShows": "سریال های مورد علاقه", + "HeaderFavoriteSongs": "آهنگ های مورد علاقه", + "HeaderLiveTV": "پخش زنده تلویزیون", + "HeaderNextUp": "بعدی چیه", + "HeaderRecordingGroups": "گروه های ضبط", + "HomeVideos": "ویدیوهای خانگی", + "Inherit": "به ارث برده", + "ItemAddedWithName": "{0} به کتابخانه افزوده شد", + "ItemRemovedWithName": "{0} از کتابخانه حذف شد", + "LabelIpAddressValue": "آدرس آی پی: {0}", + "LabelRunningTimeValue": "زمان اجرا: {0}", + "Latest": "آخرین", + "MessageApplicationUpdated": "سرور Jellyfin بروزرسانی شد", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "پکربندی بخش {0} سرور بروزرسانی شد", + "MessageServerConfigurationUpdated": "پیکربندی سرور بروزرسانی شد", + "MixedContent": "محتوای درهم", + "Movies": "فیلم های سینمایی", + "Music": "موسیقی", + "MusicVideos": "موزیک ویدیوها", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "فصل {0}", + "NameSeasonUnknown": "فصل های ناشناخته", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "بروزرسانی برنامه موجود است", + "NotificationOptionApplicationUpdateInstalled": "بروزرسانی برنامه نصب شد", + "NotificationOptionAudioPlayback": "پخش صدا آغاز شد", + "NotificationOptionAudioPlaybackStopped": "پخش صدا متوقف شد", + "NotificationOptionCameraImageUploaded": "تصاویر دوربین آپلود شد", + "NotificationOptionGamePlayback": "پخش بازی آغاز شد", + "NotificationOptionGamePlaybackStopped": "پخش بازی متوقف شد", + "NotificationOptionInstallationFailed": "شکست نصب", + "NotificationOptionNewLibraryContent": "محتوای جدید افزوده شد", + "NotificationOptionPluginError": "خرابی افزونه", + "NotificationOptionPluginInstalled": "افزونه نصب شد", + "NotificationOptionPluginUninstalled": "افزونه حذف شد", + "NotificationOptionPluginUpdateInstalled": "بروزرسانی افزونه نصب شد", + "NotificationOptionServerRestartRequired": "شروع مجدد سرور نیاز است", + "NotificationOptionTaskFailed": "شکست وظیفه برنامه ریزی شده", + "NotificationOptionUserLockedOut": "کاربر از سیستم خارج شد", + "NotificationOptionVideoPlayback": "پخش ویدیو آغاز شد", + "NotificationOptionVideoPlaybackStopped": "پخش ویدیو متوقف شد", + "Photos": "عکس ها", + "Playlists": "لیست های پخش", + "Plugin": "افزونه", + "PluginInstalledWithName": "{0} نصب شد", + "PluginUninstalledWithName": "{0} حذف شد", + "PluginUpdatedWithName": "{0} آپدیت شد", + "ProviderValue": "ارائه دهنده: {0}", + "ScheduledTaskFailedWithName": "{0} ناموفق بود", + "ScheduledTaskStartedWithName": "{0} شروع شد", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "سریال ها", + "Songs": "آهنگ ها", + "StartupEmbyServerIsLoading": "سرور Jellyfin در حال بارگیری است. لطفا کمی بعد دوباره تلاش کنید.", + "SubtitleDownloadFailureForItem": "دانلود زیرنویس برای {0} ناموفق بود", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "زیرنویس {0} دانلود شد", + "Sync": "همگامسازی", + "System": "سیستم", + "TvShows": "سریال های تلویزیونی", + "User": "کاربر", + "UserCreatedWithName": "کاربر {0} ایجاد شد", + "UserDeletedWithName": "کاربر {0} حذف شد", + "UserDownloadingItemWithValues": "{0} در حال دانلود است {1}", + "UserLockedOutWithName": "کاربر {0} از سیستم خارج شد", + "UserOfflineFromDevice": "ارتباط {0} از {1} قطع شد", + "UserOnlineFromDevice": "{0}از {1} آنلاین میباشد", + "UserPasswordChangedWithName": "رمز برای کاربر {0} تغییر یافت", + "UserPolicyUpdatedWithName": "سیاست کاربری برای {0} بروزرسانی شد", + "UserStartedPlayingItemWithValues": "{0} شروع به پخش {1} کرد", + "UserStoppedPlayingItemWithValues": "{0} پخش {1} را متوقف کرد", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "ویژه- {0}", + "VersionNumber": "نسخه {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/fr-CA.json b/Emby.Server.Implementations/Localization/Core/fr-CA.json index 737fde076f..22cd4cf6df 100644 --- a/Emby.Server.Implementations/Localization/Core/fr-CA.json +++ b/Emby.Server.Implementations/Localization/Core/fr-CA.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continuer à regarder", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "À Suivre", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Spécial - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continuer à regarder", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "À Suivre", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Spécial - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/fr.json b/Emby.Server.Implementations/Localization/Core/fr.json index c374ec3ed2..085e22cf72 100644 --- a/Emby.Server.Implementations/Localization/Core/fr.json +++ b/Emby.Server.Implementations/Localization/Core/fr.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "Application : {0}, Appareil : {1}", - "Application": "Application", - "Artists": "Artistes", - "AuthenticationSucceededWithUserName": "{0} s'est authentifié avec succès", - "Books": "Livres", - "CameraImageUploadedFrom": "Une image de caméra a été chargée depuis {0}", - "Channels": "Chaînes", - "ChapterNameValue": "Chapitre {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} s'est déconnecté", - "DeviceOnlineWithName": "{0} est connecté", - "FailedLoginAttemptWithUserName": "Échec d'une tentative de connexion de {0}", - "Favorites": "Favoris", - "Folders": "Dossiers", - "Games": "Jeux", - "Genres": "Genres", - "HeaderAlbumArtists": "Artistes de l'album", - "HeaderCameraUploads": "Photos transférées", - "HeaderContinueWatching": "Continuer à regarder", - "HeaderFavoriteAlbums": "Albums favoris", - "HeaderFavoriteArtists": "Artistes favoris", - "HeaderFavoriteEpisodes": "Épisodes favoris", - "HeaderFavoriteShows": "Séries favorites", - "HeaderFavoriteSongs": "Chansons favorites", - "HeaderLiveTV": "TV en direct", - "HeaderNextUp": "En Cours", - "HeaderRecordingGroups": "Groupes d'enregistrements", - "HomeVideos": "Vidéos personnelles", - "Inherit": "Hériter", - "ItemAddedWithName": "{0} a été ajouté à la médiathèque", - "ItemRemovedWithName": "{0} a été supprimé de la médiathèque", - "LabelIpAddressValue": "Adresse IP : {0}", - "LabelRunningTimeValue": "Durée : {0}", - "Latest": "Derniers", - "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour", - "MessageApplicationUpdatedTo": "Jellyfin Serveur a été mis à jour en version {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a été mise à jour", - "MessageServerConfigurationUpdated": "La configuration du serveur a été mise à jour.", - "MixedContent": "Contenu mixte", - "Movies": "Films", - "Music": "Musique", - "MusicVideos": "Vidéos musicales", - "NameInstallFailed": "{0} échec d'installation", - "NameSeasonNumber": "Saison {0}", - "NameSeasonUnknown": "Saison Inconnue", - "NewVersionIsAvailable": "Une nouvelle version d'Jellyfin Serveur est disponible au téléchargement.", - "NotificationOptionApplicationUpdateAvailable": "Mise à jour de l'application disponible", - "NotificationOptionApplicationUpdateInstalled": "Mise à jour de l'application installée", - "NotificationOptionAudioPlayback": "Lecture audio démarrée", - "NotificationOptionAudioPlaybackStopped": "Lecture audio arrêtée", - "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a été transférée", - "NotificationOptionGamePlayback": "Lecture de jeu démarrée", - "NotificationOptionGamePlaybackStopped": "Lecture de jeu arrêtée", - "NotificationOptionInstallationFailed": "Échec d'installation", - "NotificationOptionNewLibraryContent": "Nouveau contenu ajouté", - "NotificationOptionPluginError": "Erreur d'extension", - "NotificationOptionPluginInstalled": "Extension installée", - "NotificationOptionPluginUninstalled": "Extension désinstallée", - "NotificationOptionPluginUpdateInstalled": "Mise à jour d'extension installée", - "NotificationOptionServerRestartRequired": "Un redémarrage du serveur est requis", - "NotificationOptionTaskFailed": "Échec de tâche planifiée", - "NotificationOptionUserLockedOut": "Utilisateur verrouillé", - "NotificationOptionVideoPlayback": "Lecture vidéo démarrée", - "NotificationOptionVideoPlaybackStopped": "Lecture vidéo arrêtée", - "Photos": "Photos", - "Playlists": "Listes de lecture", - "Plugin": "Extension", - "PluginInstalledWithName": "{0} a été installé", - "PluginUninstalledWithName": "{0} a été désinstallé", - "PluginUpdatedWithName": "{0} a été mis à jour", - "ProviderValue": "Fournisseur : {0}", - "ScheduledTaskFailedWithName": "{0} a échoué", - "ScheduledTaskStartedWithName": "{0} a commencé", - "ServerNameNeedsToBeRestarted": "{0} doit être redémarré", - "Shows": "Émissions", - "Songs": "Chansons", - "StartupEmbyServerIsLoading": "Le serveur Jellyfin est en cours de chargement. Veuillez réessayer dans quelques instants.", - "SubtitleDownloadFailureForItem": "Le téléchargement des sous-titres pour {0} a échoué.", - "SubtitleDownloadFailureFromForItem": "Échec du téléchargement des sous-titres depuis {0} pour {1}", - "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont été téléchargés", - "Sync": "Synchroniser", - "System": "Système", - "TvShows": "Séries Télé", - "User": "Utilisateur", - "UserCreatedWithName": "L'utilisateur {0} a été créé", - "UserDeletedWithName": "L'utilisateur {0} a été supprimé", - "UserDownloadingItemWithValues": "{0} est en train de télécharger {1}", - "UserLockedOutWithName": "L'utilisateur {0} a été verrouillé", - "UserOfflineFromDevice": "{0} s'est déconnecté depuis {1}", - "UserOnlineFromDevice": "{0} s'est connecté depuis {1}", - "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a été modifié", - "UserPolicyUpdatedWithName": "La politique de l'utilisateur a été mise à jour pour {0}", - "UserStartedPlayingItemWithValues": "{0} est entrain de lire {1} sur {2}", - "UserStoppedPlayingItemWithValues": "{0} vient d'arrêter la lecture de {1} sur {2}", - "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre librairie", - "ValueSpecialEpisodeName": "Spécial - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "Application : {0}, Appareil : {1}", + "Application": "Application", + "Artists": "Artistes", + "AuthenticationSucceededWithUserName": "{0} s'est authentifié avec succès", + "Books": "Livres", + "CameraImageUploadedFrom": "Une image de caméra a été chargée depuis {0}", + "Channels": "Chaînes", + "ChapterNameValue": "Chapitre {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} s'est déconnecté", + "DeviceOnlineWithName": "{0} est connecté", + "FailedLoginAttemptWithUserName": "Échec d'une tentative de connexion de {0}", + "Favorites": "Favoris", + "Folders": "Dossiers", + "Games": "Jeux", + "Genres": "Genres", + "HeaderAlbumArtists": "Artistes de l'album", + "HeaderCameraUploads": "Photos transférées", + "HeaderContinueWatching": "Continuer à regarder", + "HeaderFavoriteAlbums": "Albums favoris", + "HeaderFavoriteArtists": "Artistes favoris", + "HeaderFavoriteEpisodes": "Épisodes favoris", + "HeaderFavoriteShows": "Séries favorites", + "HeaderFavoriteSongs": "Chansons favorites", + "HeaderLiveTV": "TV en direct", + "HeaderNextUp": "En Cours", + "HeaderRecordingGroups": "Groupes d'enregistrements", + "HomeVideos": "Vidéos personnelles", + "Inherit": "Hériter", + "ItemAddedWithName": "{0} a été ajouté à la médiathèque", + "ItemRemovedWithName": "{0} a été supprimé de la médiathèque", + "LabelIpAddressValue": "Adresse IP : {0}", + "LabelRunningTimeValue": "Durée : {0}", + "Latest": "Derniers", + "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour", + "MessageApplicationUpdatedTo": "Jellyfin Serveur a été mis à jour en version {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a été mise à jour", + "MessageServerConfigurationUpdated": "La configuration du serveur a été mise à jour.", + "MixedContent": "Contenu mixte", + "Movies": "Films", + "Music": "Musique", + "MusicVideos": "Vidéos musicales", + "NameInstallFailed": "{0} échec d'installation", + "NameSeasonNumber": "Saison {0}", + "NameSeasonUnknown": "Saison Inconnue", + "NewVersionIsAvailable": "Une nouvelle version d'Jellyfin Serveur est disponible au téléchargement.", + "NotificationOptionApplicationUpdateAvailable": "Mise à jour de l'application disponible", + "NotificationOptionApplicationUpdateInstalled": "Mise à jour de l'application installée", + "NotificationOptionAudioPlayback": "Lecture audio démarrée", + "NotificationOptionAudioPlaybackStopped": "Lecture audio arrêtée", + "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a été transférée", + "NotificationOptionGamePlayback": "Lecture de jeu démarrée", + "NotificationOptionGamePlaybackStopped": "Lecture de jeu arrêtée", + "NotificationOptionInstallationFailed": "Échec d'installation", + "NotificationOptionNewLibraryContent": "Nouveau contenu ajouté", + "NotificationOptionPluginError": "Erreur d'extension", + "NotificationOptionPluginInstalled": "Extension installée", + "NotificationOptionPluginUninstalled": "Extension désinstallée", + "NotificationOptionPluginUpdateInstalled": "Mise à jour d'extension installée", + "NotificationOptionServerRestartRequired": "Un redémarrage du serveur est requis", + "NotificationOptionTaskFailed": "Échec de tâche planifiée", + "NotificationOptionUserLockedOut": "Utilisateur verrouillé", + "NotificationOptionVideoPlayback": "Lecture vidéo démarrée", + "NotificationOptionVideoPlaybackStopped": "Lecture vidéo arrêtée", + "Photos": "Photos", + "Playlists": "Listes de lecture", + "Plugin": "Extension", + "PluginInstalledWithName": "{0} a été installé", + "PluginUninstalledWithName": "{0} a été désinstallé", + "PluginUpdatedWithName": "{0} a été mis à jour", + "ProviderValue": "Fournisseur : {0}", + "ScheduledTaskFailedWithName": "{0} a échoué", + "ScheduledTaskStartedWithName": "{0} a commencé", + "ServerNameNeedsToBeRestarted": "{0} doit être redémarré", + "Shows": "Émissions", + "Songs": "Chansons", + "StartupEmbyServerIsLoading": "Le serveur Jellyfin est en cours de chargement. Veuillez réessayer dans quelques instants.", + "SubtitleDownloadFailureForItem": "Le téléchargement des sous-titres pour {0} a échoué.", + "SubtitleDownloadFailureFromForItem": "Échec du téléchargement des sous-titres depuis {0} pour {1}", + "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont été téléchargés", + "Sync": "Synchroniser", + "System": "Système", + "TvShows": "Séries Télé", + "User": "Utilisateur", + "UserCreatedWithName": "L'utilisateur {0} a été créé", + "UserDeletedWithName": "L'utilisateur {0} a été supprimé", + "UserDownloadingItemWithValues": "{0} est en train de télécharger {1}", + "UserLockedOutWithName": "L'utilisateur {0} a été verrouillé", + "UserOfflineFromDevice": "{0} s'est déconnecté depuis {1}", + "UserOnlineFromDevice": "{0} s'est connecté depuis {1}", + "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a été modifié", + "UserPolicyUpdatedWithName": "La politique de l'utilisateur a été mise à jour pour {0}", + "UserStartedPlayingItemWithValues": "{0} est entrain de lire {1} sur {2}", + "UserStoppedPlayingItemWithValues": "{0} vient d'arrêter la lecture de {1} sur {2}", + "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre librairie", + "ValueSpecialEpisodeName": "Spécial - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/gsw.json b/Emby.Server.Implementations/Localization/Core/gsw.json index 4d53418b91..537fe35d5e 100644 --- a/Emby.Server.Implementations/Localization/Core/gsw.json +++ b/Emby.Server.Implementations/Localization/Core/gsw.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Büecher", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Spiel", - "Genres": "Genres", - "HeaderAlbumArtists": "Albuminterprete", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Wiiterluege", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Besti Interpret", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Besti Lieder", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Ufnahmegruppe", - "HomeVideos": "Heimfilmli", - "Inherit": "Hinzuefüege", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Letschte", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Gmischte Inhalt", - "Movies": "Movies", - "Music": "Musig", - "MusicVideos": "Musigfilm", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Fotis", - "Playlists": "Abspielliste", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Spezial - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Büecher", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Spiel", + "Genres": "Genres", + "HeaderAlbumArtists": "Albuminterprete", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Wiiterluege", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Besti Interpret", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Besti Lieder", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Ufnahmegruppe", + "HomeVideos": "Heimfilmli", + "Inherit": "Hinzuefüege", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Letschte", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Gmischte Inhalt", + "Movies": "Movies", + "Music": "Musig", + "MusicVideos": "Musigfilm", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Fotis", + "Playlists": "Abspielliste", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Spezial - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json index 67abf1d18b..6fff9d0abc 100644 --- a/Emby.Server.Implementations/Localization/Core/he.json +++ b/Emby.Server.Implementations/Localization/Core/he.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "ספרים", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "משחקים", - "Genres": "ז'אנרים", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "המשך בצפייה", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "קבוצות הקלטה", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "אחרון", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "תוכן מעורב", - "Movies": "סרטים", - "Music": "מוזיקה", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "תמונות", - "Playlists": "רשימות ניגון", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "סנכרן", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "מיוחד- {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "ספרים", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "משחקים", + "Genres": "ז'אנרים", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "המשך בצפייה", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "קבוצות הקלטה", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "אחרון", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "תוכן מעורב", + "Movies": "סרטים", + "Music": "מוזיקה", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "תמונות", + "Playlists": "רשימות ניגון", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "סנכרן", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "מיוחד- {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json index e0add87bf1..3232a4ff72 100644 --- a/Emby.Server.Implementations/Localization/Core/hr.json +++ b/Emby.Server.Implementations/Localization/Core/hr.json @@ -1,100 +1,100 @@ { - "Albums": "Albumi", - "AppDeviceValues": "Aplikacija: {0}, Uređaj: {1}", - "Application": "Aplikacija", - "Artists": "Izvođači", - "AuthenticationSucceededWithUserName": "{0} uspješno ovjerena", - "Books": "Knjige", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanali", - "ChapterNameValue": "Poglavlje {0}", - "Collections": "Kolekcije", - "DeviceOfflineWithName": "{0} se odspojilo", - "DeviceOnlineWithName": "{0} je spojeno", - "FailedLoginAttemptWithUserName": "Neuspjeli pokušaj prijave za {0}", - "Favorites": "Omiljeni", - "Folders": "Mape", - "Games": "Igre", - "Genres": "Žanrovi", - "HeaderAlbumArtists": "Izvođači albuma", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Omiljeni albumi", - "HeaderFavoriteArtists": "Omiljeni izvođači", - "HeaderFavoriteEpisodes": "Omiljene epizode", - "HeaderFavoriteShows": "Omiljene emisije", - "HeaderFavoriteSongs": "Omiljene pjesme", - "HeaderLiveTV": "TV uživo", - "HeaderNextUp": "Sljedeće je", - "HeaderRecordingGroups": "Grupa snimka", - "HomeVideos": "Kućni videi", - "Inherit": "Naslijedi", - "ItemAddedWithName": "{0} je dodano u biblioteku", - "ItemRemovedWithName": "{0} je uklonjen iz biblioteke", - "LabelIpAddressValue": "Ip adresa: {0}", - "LabelRunningTimeValue": "Vrijeme rada: {0}", - "Latest": "Najnovije", - "MessageApplicationUpdated": "Jellyfin Server je ažuriran", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Odjeljak postavka servera {0} je ažuriran", - "MessageServerConfigurationUpdated": "Postavke servera su ažurirane", - "MixedContent": "Miješani sadržaj", - "Movies": "Filmovi", - "Music": "Glazba", - "MusicVideos": "Glazbeni spotovi", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Sezona {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Dostupno ažuriranje aplikacije", - "NotificationOptionApplicationUpdateInstalled": "Instalirano ažuriranje aplikacije", - "NotificationOptionAudioPlayback": "Reprodukcija glazbe započeta", - "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena", - "NotificationOptionCameraImageUploaded": "Slike kamere preuzete", - "NotificationOptionGamePlayback": "Igrica pokrenuta", - "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena", - "NotificationOptionInstallationFailed": "Instalacija nije izvršena", - "NotificationOptionNewLibraryContent": "Novi sadržaj je dodan", - "NotificationOptionPluginError": "Dodatak otkazao", - "NotificationOptionPluginInstalled": "Dodatak instaliran", - "NotificationOptionPluginUninstalled": "Dodatak uklonjen", - "NotificationOptionPluginUpdateInstalled": "Instalirano ažuriranje za dodatak", - "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera", - "NotificationOptionTaskFailed": "Zakazan zadatak nije izvršen", - "NotificationOptionUserLockedOut": "Korisnik zaključan", - "NotificationOptionVideoPlayback": "Reprodukcija videa započeta", - "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena", - "Photos": "Slike", - "Playlists": "Popisi", - "Plugin": "Dodatak", - "PluginInstalledWithName": "{0} je instalirano", - "PluginUninstalledWithName": "{0} je deinstalirano", - "PluginUpdatedWithName": "{0} je ažurirano", - "ProviderValue": "Pružitelj: {0}", - "ScheduledTaskFailedWithName": "{0} neuspjelo", - "ScheduledTaskStartedWithName": "{0} pokrenuto", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Pjesme", - "StartupEmbyServerIsLoading": "Jellyfin Server se učitava. Pokušajte ponovo kasnije.", - "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Titlovi prijevoda preuzeti za {0}", - "Sync": "Sink.", - "System": "Sistem", - "TvShows": "TV Shows", - "User": "Korisnik", - "UserCreatedWithName": "Korisnik {0} je stvoren", - "UserDeletedWithName": "Korisnik {0} je obrisan", - "UserDownloadingItemWithValues": "{0} se preuzima {1}", - "UserLockedOutWithName": "Korisnik {0} je zaključan", - "UserOfflineFromDevice": "{0} se odspojilo od {1}", - "UserOnlineFromDevice": "{0} je online od {1}", - "UserPasswordChangedWithName": "Lozinka je promijenjena za korisnika {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} je pokrenuo {1}", - "UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Specijal - {0}", - "VersionNumber": "Verzija {0}" + "Albums": "Albumi", + "AppDeviceValues": "Aplikacija: {0}, Uređaj: {1}", + "Application": "Aplikacija", + "Artists": "Izvođači", + "AuthenticationSucceededWithUserName": "{0} uspješno ovjerena", + "Books": "Knjige", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanali", + "ChapterNameValue": "Poglavlje {0}", + "Collections": "Kolekcije", + "DeviceOfflineWithName": "{0} se odspojilo", + "DeviceOnlineWithName": "{0} je spojeno", + "FailedLoginAttemptWithUserName": "Neuspjeli pokušaj prijave za {0}", + "Favorites": "Omiljeni", + "Folders": "Mape", + "Games": "Igre", + "Genres": "Žanrovi", + "HeaderAlbumArtists": "Izvođači albuma", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Omiljeni albumi", + "HeaderFavoriteArtists": "Omiljeni izvođači", + "HeaderFavoriteEpisodes": "Omiljene epizode", + "HeaderFavoriteShows": "Omiljene emisije", + "HeaderFavoriteSongs": "Omiljene pjesme", + "HeaderLiveTV": "TV uživo", + "HeaderNextUp": "Sljedeće je", + "HeaderRecordingGroups": "Grupa snimka", + "HomeVideos": "Kućni videi", + "Inherit": "Naslijedi", + "ItemAddedWithName": "{0} je dodano u biblioteku", + "ItemRemovedWithName": "{0} je uklonjen iz biblioteke", + "LabelIpAddressValue": "Ip adresa: {0}", + "LabelRunningTimeValue": "Vrijeme rada: {0}", + "Latest": "Najnovije", + "MessageApplicationUpdated": "Jellyfin Server je ažuriran", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Odjeljak postavka servera {0} je ažuriran", + "MessageServerConfigurationUpdated": "Postavke servera su ažurirane", + "MixedContent": "Miješani sadržaj", + "Movies": "Filmovi", + "Music": "Glazba", + "MusicVideos": "Glazbeni spotovi", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Sezona {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Dostupno ažuriranje aplikacije", + "NotificationOptionApplicationUpdateInstalled": "Instalirano ažuriranje aplikacije", + "NotificationOptionAudioPlayback": "Reprodukcija glazbe započeta", + "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena", + "NotificationOptionCameraImageUploaded": "Slike kamere preuzete", + "NotificationOptionGamePlayback": "Igrica pokrenuta", + "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena", + "NotificationOptionInstallationFailed": "Instalacija nije izvršena", + "NotificationOptionNewLibraryContent": "Novi sadržaj je dodan", + "NotificationOptionPluginError": "Dodatak otkazao", + "NotificationOptionPluginInstalled": "Dodatak instaliran", + "NotificationOptionPluginUninstalled": "Dodatak uklonjen", + "NotificationOptionPluginUpdateInstalled": "Instalirano ažuriranje za dodatak", + "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera", + "NotificationOptionTaskFailed": "Zakazan zadatak nije izvršen", + "NotificationOptionUserLockedOut": "Korisnik zaključan", + "NotificationOptionVideoPlayback": "Reprodukcija videa započeta", + "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena", + "Photos": "Slike", + "Playlists": "Popisi", + "Plugin": "Dodatak", + "PluginInstalledWithName": "{0} je instalirano", + "PluginUninstalledWithName": "{0} je deinstalirano", + "PluginUpdatedWithName": "{0} je ažurirano", + "ProviderValue": "Pružitelj: {0}", + "ScheduledTaskFailedWithName": "{0} neuspjelo", + "ScheduledTaskStartedWithName": "{0} pokrenuto", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Pjesme", + "StartupEmbyServerIsLoading": "Jellyfin Server se učitava. Pokušajte ponovo kasnije.", + "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Titlovi prijevoda preuzeti za {0}", + "Sync": "Sink.", + "System": "Sistem", + "TvShows": "TV Shows", + "User": "Korisnik", + "UserCreatedWithName": "Korisnik {0} je stvoren", + "UserDeletedWithName": "Korisnik {0} je obrisan", + "UserDownloadingItemWithValues": "{0} se preuzima {1}", + "UserLockedOutWithName": "Korisnik {0} je zaključan", + "UserOfflineFromDevice": "{0} se odspojilo od {1}", + "UserOnlineFromDevice": "{0} je online od {1}", + "UserPasswordChangedWithName": "Lozinka je promijenjena za korisnika {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} je pokrenuo {1}", + "UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Specijal - {0}", + "VersionNumber": "Verzija {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/hu.json b/Emby.Server.Implementations/Localization/Core/hu.json index ad31645880..3a0119faf9 100644 --- a/Emby.Server.Implementations/Localization/Core/hu.json +++ b/Emby.Server.Implementations/Localization/Core/hu.json @@ -1,100 +1,100 @@ { - "Albums": "Albumok", - "AppDeviceValues": "Program: {0}, Eszköz: {1}", - "Application": "Program", - "Artists": "Előadók", - "AuthenticationSucceededWithUserName": "{0} sikeresen azonosítva", - "Books": "Könyvek", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Csatornák", - "ChapterNameValue": "Jelenet {0}", - "Collections": "Gyűjtemények", - "DeviceOfflineWithName": "{0} kijelentkezett", - "DeviceOnlineWithName": "{0} belépett", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Kedvencek", - "Folders": "Könyvtárak", - "Games": "Játékok", - "Genres": "Műfajok", - "HeaderAlbumArtists": "Album Előadók", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Vetítés(ek) folytatása", - "HeaderFavoriteAlbums": "Kedvenc Albumok", - "HeaderFavoriteArtists": "Kedvenc Művészek", - "HeaderFavoriteEpisodes": "Kedvenc Epizódok", - "HeaderFavoriteShows": "Kedvenc Műsorok", - "HeaderFavoriteSongs": "Kedvenc Dalok", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Következik", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Házi videók", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip cím: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Legújabb", - "MessageApplicationUpdated": "Jellyfin Szerver frissítve", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Szerver konfigurációs rész {0} frissítve", - "MessageServerConfigurationUpdated": "Szerver konfiguráció frissítve", - "MixedContent": "Vegyes tartalom", - "Movies": "Filmek", - "Music": "Zene", - "MusicVideos": "Zenei Videók", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Program frissítés elérhető", - "NotificationOptionApplicationUpdateInstalled": "Program frissítés telepítve", - "NotificationOptionAudioPlayback": "Audió lejátszás elkezdve", - "NotificationOptionAudioPlaybackStopped": "Audió lejátszás befejezve", - "NotificationOptionCameraImageUploaded": "Kamera kép feltöltve", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Telepítési hiba", - "NotificationOptionNewLibraryContent": "Új tartalom hozzáadva", - "NotificationOptionPluginError": "Bővítmény hiba", - "NotificationOptionPluginInstalled": "Bővítmény telepítve", - "NotificationOptionPluginUninstalled": "Bővítmény eltávolítva", - "NotificationOptionPluginUpdateInstalled": "Bővítmény frissítés telepítve", - "NotificationOptionServerRestartRequired": "Szerver újraindítás szükséges", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "Felhasználó tiltva", - "NotificationOptionVideoPlayback": "Videó lejátszás elkezdve", - "NotificationOptionVideoPlaybackStopped": "Videó lejátszás befejezve", - "Photos": "Fényképek", - "Playlists": "Lejátszási listák", - "Plugin": "Bővítmény", - "PluginInstalledWithName": "{0} telepítve", - "PluginUninstalledWithName": "{0} eltávolítva", - "PluginUpdatedWithName": "{0} frissítve", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Műsorok", - "Songs": "Dalok", - "StartupEmbyServerIsLoading": "Jellyfin Szerver betöltődik. Kérjük, próbáld meg újra később.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Szinkronizál", - "System": "Rendszer", - "TvShows": "TV Műsorok", - "User": "Felhasználó", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} letölti {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} kijelentkezett innen {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} elkezdte játszani a következőt {1}", - "UserStoppedPlayingItemWithValues": "{0} befejezte a következőt {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Verzió {0}" + "Albums": "Albumok", + "AppDeviceValues": "Program: {0}, Eszköz: {1}", + "Application": "Program", + "Artists": "Előadók", + "AuthenticationSucceededWithUserName": "{0} sikeresen azonosítva", + "Books": "Könyvek", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Csatornák", + "ChapterNameValue": "Jelenet {0}", + "Collections": "Gyűjtemények", + "DeviceOfflineWithName": "{0} kijelentkezett", + "DeviceOnlineWithName": "{0} belépett", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Kedvencek", + "Folders": "Könyvtárak", + "Games": "Játékok", + "Genres": "Műfajok", + "HeaderAlbumArtists": "Album Előadók", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Vetítés(ek) folytatása", + "HeaderFavoriteAlbums": "Kedvenc Albumok", + "HeaderFavoriteArtists": "Kedvenc Művészek", + "HeaderFavoriteEpisodes": "Kedvenc Epizódok", + "HeaderFavoriteShows": "Kedvenc Műsorok", + "HeaderFavoriteSongs": "Kedvenc Dalok", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Következik", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Házi videók", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip cím: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Legújabb", + "MessageApplicationUpdated": "Jellyfin Szerver frissítve", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Szerver konfigurációs rész {0} frissítve", + "MessageServerConfigurationUpdated": "Szerver konfiguráció frissítve", + "MixedContent": "Vegyes tartalom", + "Movies": "Filmek", + "Music": "Zene", + "MusicVideos": "Zenei Videók", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Program frissítés elérhető", + "NotificationOptionApplicationUpdateInstalled": "Program frissítés telepítve", + "NotificationOptionAudioPlayback": "Audió lejátszás elkezdve", + "NotificationOptionAudioPlaybackStopped": "Audió lejátszás befejezve", + "NotificationOptionCameraImageUploaded": "Kamera kép feltöltve", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Telepítési hiba", + "NotificationOptionNewLibraryContent": "Új tartalom hozzáadva", + "NotificationOptionPluginError": "Bővítmény hiba", + "NotificationOptionPluginInstalled": "Bővítmény telepítve", + "NotificationOptionPluginUninstalled": "Bővítmény eltávolítva", + "NotificationOptionPluginUpdateInstalled": "Bővítmény frissítés telepítve", + "NotificationOptionServerRestartRequired": "Szerver újraindítás szükséges", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "Felhasználó tiltva", + "NotificationOptionVideoPlayback": "Videó lejátszás elkezdve", + "NotificationOptionVideoPlaybackStopped": "Videó lejátszás befejezve", + "Photos": "Fényképek", + "Playlists": "Lejátszási listák", + "Plugin": "Bővítmény", + "PluginInstalledWithName": "{0} telepítve", + "PluginUninstalledWithName": "{0} eltávolítva", + "PluginUpdatedWithName": "{0} frissítve", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Műsorok", + "Songs": "Dalok", + "StartupEmbyServerIsLoading": "Jellyfin Szerver betöltődik. Kérjük, próbáld meg újra később.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Szinkronizál", + "System": "Rendszer", + "TvShows": "TV Műsorok", + "User": "Felhasználó", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} letölti {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} kijelentkezett innen {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} elkezdte játszani a következőt {1}", + "UserStoppedPlayingItemWithValues": "{0} befejezte a következőt {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Verzió {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/it.json b/Emby.Server.Implementations/Localization/Core/it.json index ed980ac7af..58b7bb61a0 100644 --- a/Emby.Server.Implementations/Localization/Core/it.json +++ b/Emby.Server.Implementations/Localization/Core/it.json @@ -1,100 +1,100 @@ { - "Albums": "Album", - "AppDeviceValues": "App: {0}, Dispositivo: {1}", - "Application": "Applicazione", - "Artists": "Artisti", - "AuthenticationSucceededWithUserName": "{0} autenticato con successo", - "Books": "Libri", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Canali", - "ChapterNameValue": "Capitolo {0}", - "Collections": "Collezioni", - "DeviceOfflineWithName": "{0} è stato disconnesso", - "DeviceOnlineWithName": "{0} è connesso", - "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}", - "Favorites": "Preferiti", - "Folders": "Cartelle", - "Games": "Giochi", - "Genres": "Generi", - "HeaderAlbumArtists": "Artisti Album", - "HeaderCameraUploads": "Caricamenti Fotocamera", - "HeaderContinueWatching": "Continua a guardare", - "HeaderFavoriteAlbums": "Album preferiti", - "HeaderFavoriteArtists": "Artisti preferiti", - "HeaderFavoriteEpisodes": "Episodi Preferiti", - "HeaderFavoriteShows": "Show preferiti", - "HeaderFavoriteSongs": "Brani Preferiti", - "HeaderLiveTV": "Diretta TV", - "HeaderNextUp": "Prossimo", - "HeaderRecordingGroups": "Gruppi di Registrazione", - "HomeVideos": "Video personali", - "Inherit": "Eredita", - "ItemAddedWithName": "{0} è stato aggiunto alla libreria", - "ItemRemovedWithName": "{0} è stato rimosso dalla libreria", - "LabelIpAddressValue": "Indirizzo IP: {0}", - "LabelRunningTimeValue": "Durata: {0}", - "Latest": "Più recenti", - "MessageApplicationUpdated": "Il Server Jellyfin è stato aggiornato", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server è stata aggiornata", - "MessageServerConfigurationUpdated": "La configurazione del server è stata aggiornata", - "MixedContent": "Contenuto misto", - "Movies": "Film", - "Music": "Musica", - "MusicVideos": "Video musicali", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Stagione {0}", - "NameSeasonUnknown": "Stagione sconosciuto", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile", - "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato", - "NotificationOptionAudioPlayback": "La riproduzione audio è iniziata", - "NotificationOptionAudioPlaybackStopped": "La riproduzione audio è stata interrotta", - "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata", - "NotificationOptionGamePlayback": "Il gioco è stato avviato", - "NotificationOptionGamePlaybackStopped": "Il gioco è stato fermato", - "NotificationOptionInstallationFailed": "Installazione fallita", - "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto", - "NotificationOptionPluginError": "Errore del Plug-in", - "NotificationOptionPluginInstalled": "Plug-in installato", - "NotificationOptionPluginUninstalled": "Plug-in disinstallato", - "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plug-in installato", - "NotificationOptionServerRestartRequired": "Riavvio del server necessario", - "NotificationOptionTaskFailed": "Operazione pianificata fallita", - "NotificationOptionUserLockedOut": "Utente bloccato", - "NotificationOptionVideoPlayback": "La riproduzione video è iniziata", - "NotificationOptionVideoPlaybackStopped": "La riproduzione video è stata interrotta", - "Photos": "Foto", - "Playlists": "Playlist", - "Plugin": "Plug-in", - "PluginInstalledWithName": "{0} è stato Installato", - "PluginUninstalledWithName": "{0} è stato disinstallato", - "PluginUpdatedWithName": "{0} è stato aggiornato", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} fallito", - "ScheduledTaskStartedWithName": "{0} avviati", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Programmi", - "Songs": "Canzoni", - "StartupEmbyServerIsLoading": "Jellyfin server si sta avviando. Per favore riprova più tardi.", - "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}", - "Sync": "Sincronizza", - "System": "Sistema", - "TvShows": "Serie TV", - "User": "Utente", - "UserCreatedWithName": "L'utente {0} è stato creato", - "UserDeletedWithName": "L'utente {0} è stato rimosso", - "UserDownloadingItemWithValues": "{0} sta scaricando {1}", - "UserLockedOutWithName": "L'utente {0} è stato bloccato", - "UserOfflineFromDevice": "{0} è stato disconnesso da {1}", - "UserOnlineFromDevice": "{0} è online da {1}", - "UserPasswordChangedWithName": "La password è stata cambiata per l'utente {0}", - "UserPolicyUpdatedWithName": "La politica dell'utente è stata aggiornata per {0}", - "UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}", - "UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Speciale - {0}", - "VersionNumber": "Versione {0}" + "Albums": "Album", + "AppDeviceValues": "App: {0}, Dispositivo: {1}", + "Application": "Applicazione", + "Artists": "Artisti", + "AuthenticationSucceededWithUserName": "{0} autenticato con successo", + "Books": "Libri", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Canali", + "ChapterNameValue": "Capitolo {0}", + "Collections": "Collezioni", + "DeviceOfflineWithName": "{0} è stato disconnesso", + "DeviceOnlineWithName": "{0} è connesso", + "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}", + "Favorites": "Preferiti", + "Folders": "Cartelle", + "Games": "Giochi", + "Genres": "Generi", + "HeaderAlbumArtists": "Artisti Album", + "HeaderCameraUploads": "Caricamenti Fotocamera", + "HeaderContinueWatching": "Continua a guardare", + "HeaderFavoriteAlbums": "Album preferiti", + "HeaderFavoriteArtists": "Artisti preferiti", + "HeaderFavoriteEpisodes": "Episodi Preferiti", + "HeaderFavoriteShows": "Show preferiti", + "HeaderFavoriteSongs": "Brani Preferiti", + "HeaderLiveTV": "Diretta TV", + "HeaderNextUp": "Prossimo", + "HeaderRecordingGroups": "Gruppi di Registrazione", + "HomeVideos": "Video personali", + "Inherit": "Eredita", + "ItemAddedWithName": "{0} è stato aggiunto alla libreria", + "ItemRemovedWithName": "{0} è stato rimosso dalla libreria", + "LabelIpAddressValue": "Indirizzo IP: {0}", + "LabelRunningTimeValue": "Durata: {0}", + "Latest": "Più recenti", + "MessageApplicationUpdated": "Il Server Jellyfin è stato aggiornato", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server è stata aggiornata", + "MessageServerConfigurationUpdated": "La configurazione del server è stata aggiornata", + "MixedContent": "Contenuto misto", + "Movies": "Film", + "Music": "Musica", + "MusicVideos": "Video musicali", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Stagione {0}", + "NameSeasonUnknown": "Stagione sconosciuto", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile", + "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato", + "NotificationOptionAudioPlayback": "La riproduzione audio è iniziata", + "NotificationOptionAudioPlaybackStopped": "La riproduzione audio è stata interrotta", + "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata", + "NotificationOptionGamePlayback": "Il gioco è stato avviato", + "NotificationOptionGamePlaybackStopped": "Il gioco è stato fermato", + "NotificationOptionInstallationFailed": "Installazione fallita", + "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto", + "NotificationOptionPluginError": "Errore del Plug-in", + "NotificationOptionPluginInstalled": "Plug-in installato", + "NotificationOptionPluginUninstalled": "Plug-in disinstallato", + "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plug-in installato", + "NotificationOptionServerRestartRequired": "Riavvio del server necessario", + "NotificationOptionTaskFailed": "Operazione pianificata fallita", + "NotificationOptionUserLockedOut": "Utente bloccato", + "NotificationOptionVideoPlayback": "La riproduzione video è iniziata", + "NotificationOptionVideoPlaybackStopped": "La riproduzione video è stata interrotta", + "Photos": "Foto", + "Playlists": "Playlist", + "Plugin": "Plug-in", + "PluginInstalledWithName": "{0} è stato Installato", + "PluginUninstalledWithName": "{0} è stato disinstallato", + "PluginUpdatedWithName": "{0} è stato aggiornato", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} fallito", + "ScheduledTaskStartedWithName": "{0} avviati", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Programmi", + "Songs": "Canzoni", + "StartupEmbyServerIsLoading": "Jellyfin server si sta avviando. Per favore riprova più tardi.", + "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}", + "Sync": "Sincronizza", + "System": "Sistema", + "TvShows": "Serie TV", + "User": "Utente", + "UserCreatedWithName": "L'utente {0} è stato creato", + "UserDeletedWithName": "L'utente {0} è stato rimosso", + "UserDownloadingItemWithValues": "{0} sta scaricando {1}", + "UserLockedOutWithName": "L'utente {0} è stato bloccato", + "UserOfflineFromDevice": "{0} è stato disconnesso da {1}", + "UserOnlineFromDevice": "{0} è online da {1}", + "UserPasswordChangedWithName": "La password è stata cambiata per l'utente {0}", + "UserPolicyUpdatedWithName": "La politica dell'utente è stata aggiornata per {0}", + "UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}", + "UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Speciale - {0}", + "VersionNumber": "Versione {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/kk.json b/Emby.Server.Implementations/Localization/Core/kk.json index 970a5d4605..45b8617f1a 100644 --- a/Emby.Server.Implementations/Localization/Core/kk.json +++ b/Emby.Server.Implementations/Localization/Core/kk.json @@ -1,100 +1,100 @@ { - "Albums": "Альбомдар", - "AppDeviceValues": "Қолданба: {0}, Құрылғы: {1}", - "Application": "Қолданба", - "Artists": "Орындаушылар", - "AuthenticationSucceededWithUserName": "{0} түпнұсқалығын расталуы сәтті", - "Books": "Кітаптар", - "CameraImageUploadedFrom": "Жаңа сурет {0} камерасынан жүктеп алынды", - "Channels": "Арналар", - "ChapterNameValue": "{0}-сахна", - "Collections": "Жиынтықтар", - "DeviceOfflineWithName": "{0} ажыратылған", - "DeviceOnlineWithName": "{0} қосылған", - "FailedLoginAttemptWithUserName": "{0} тарапынан кіру әрекеті сәтсіз", - "Favorites": "Таңдаулылар", - "Folders": "Қалталар", - "Games": "Ойындар", - "Genres": "Жанрлар", - "HeaderAlbumArtists": "Альбом орындаушылары", - "HeaderCameraUploads": "Камерадан жүктелгендер", - "HeaderContinueWatching": "Қарауды жалғастыру", - "HeaderFavoriteAlbums": "Таңдаулы альбомдар", - "HeaderFavoriteArtists": "Таңдаулы орындаушылар", - "HeaderFavoriteEpisodes": "Таңдаулы бөлімдер", - "HeaderFavoriteShows": "Таңдаулы көрсетімдер", - "HeaderFavoriteSongs": "Таңдаулы әуендер", - "HeaderLiveTV": "Эфир", - "HeaderNextUp": "Кезекті", - "HeaderRecordingGroups": "Жазба топтары", - "HomeVideos": "Үйлік бейнелер", - "Inherit": "Мұраға иелену", - "ItemAddedWithName": "{0} тасығышханаға үстелінді", - "ItemRemovedWithName": "{0} тасығышханадан аласталды", - "LabelIpAddressValue": "IP-мекенжайы: {0}", - "LabelRunningTimeValue": "Іске қосылу уақыты: {0}", - "Latest": "Ең кейінгі", - "MessageApplicationUpdated": "Jellyfin Server жаңартылды.", - "MessageApplicationUpdatedTo": "Jellyfin Server {0} үшін жаңартылды", - "MessageNamedServerConfigurationUpdatedWithValue": "Сервер теңшелімі ({0} бөлімі) жаңартылды", - "MessageServerConfigurationUpdated": "Сервер теңшелімі жаңартылды", - "MixedContent": "Аралас мазмұн", - "Movies": "Фильмдер", - "Music": "Музыка", - "MusicVideos": "Музыкалық бейнелер", - "NameInstallFailed": "{0} орнатылуы сәтсіз", - "NameSeasonNumber": "{0}-маусым", - "NameSeasonUnknown": "Белгісіз маусым", - "NewVersionIsAvailable": "Жаңа Jellyfin Server нұсқасы жүктеп алуға қолжетімді.", - "NotificationOptionApplicationUpdateAvailable": "Қолданба жаңартуы қолжетімді", - "NotificationOptionApplicationUpdateInstalled": "Қолданба жаңартуы орнатылды", - "NotificationOptionAudioPlayback": "Дыбыс ойнатуы басталды", - "NotificationOptionAudioPlaybackStopped": "Дыбыс ойнатуы тоқтатылды", - "NotificationOptionCameraImageUploaded": "Камерадан фотосурет кері қотарылған", - "NotificationOptionGamePlayback": "Ойын ойнатуы басталды", - "NotificationOptionGamePlaybackStopped": "Ойын ойнатуы тоқтатылды", - "NotificationOptionInstallationFailed": "Орнату сәтсіздігі", - "NotificationOptionNewLibraryContent": "Жаңа мазмұн үстелген", - "NotificationOptionPluginError": "Плагин сәтсіздігі", - "NotificationOptionPluginInstalled": "Плагин орнатылды", - "NotificationOptionPluginUninstalled": "Плагин орнатуы болдырылмады", - "NotificationOptionPluginUpdateInstalled": "Плагин жаңартуы орнатылды", - "NotificationOptionServerRestartRequired": "Серверді қайта іске қосу қажет", - "NotificationOptionTaskFailed": "Жоспарлаған тапсырма сәтсіздігі", - "NotificationOptionUserLockedOut": "Пайдаланушы құрсаулы", - "NotificationOptionVideoPlayback": "Бейне ойнатуы басталды", - "NotificationOptionVideoPlaybackStopped": "Бейне ойнатуы тоқтатылды", - "Photos": "Фотосуреттер", - "Playlists": "Ойнату тізімдері", - "Plugin": "Плагин", - "PluginInstalledWithName": "{0} орнатылды", - "PluginUninstalledWithName": "{0} жойылды", - "PluginUpdatedWithName": "{0} жаңартылды", - "ProviderValue": "Жеткізуші: {0}", - "ScheduledTaskFailedWithName": "{0} сәтсіз", - "ScheduledTaskStartedWithName": "{0} іске қосылды", - "ServerNameNeedsToBeRestarted": "{0} қайта іске қосу қажет", - "Shows": "Көрсетімдер", - "Songs": "Әуендер", - "StartupEmbyServerIsLoading": "Jellyfin Server жүктелуде. Әрекетті көп ұзамай қайталаңыз.", - "SubtitleDownloadFailureForItem": "Субтитрлер {0} үшін жүктеліп алынуы сәтсіз", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "{0} үшін субтитрлер жүктеліп алынды", - "Sync": "Үндестіру", - "System": "Жүйе", - "TvShows": "ТД-көрсетімдер", - "User": "Пайдаланушы", - "UserCreatedWithName": "Пайдаланушы {0} жасалған", - "UserDeletedWithName": "Пайдаланушы {0} жойылған", - "UserDownloadingItemWithValues": "{0} мынаны жүктеп алуда: {1}", - "UserLockedOutWithName": "Пайдаланушы {0} құрсаулы", - "UserOfflineFromDevice": "{0} - {1} тарапынан ажыратылған", - "UserOnlineFromDevice": "{0} - {1} арқылы қосылған", - "UserPasswordChangedWithName": "Пайдаланушы {0} үшін құпия сөз өзгертілді", - "UserPolicyUpdatedWithName": "Пайдаланушы {0} үшін саясаттары жаңартылды", - "UserStartedPlayingItemWithValues": "{0} - {1} ойнатуын {2} бастады", - "UserStoppedPlayingItemWithValues": "{0} - {1} ойнатуын {2} тоқтатты", - "ValueHasBeenAddedToLibrary": "{0} (тасығышханаға үстелінді)", - "ValueSpecialEpisodeName": "Арнайы - {0}", - "VersionNumber": "Нұсқасы: {0}" + "Albums": "Альбомдар", + "AppDeviceValues": "Қолданба: {0}, Құрылғы: {1}", + "Application": "Қолданба", + "Artists": "Орындаушылар", + "AuthenticationSucceededWithUserName": "{0} түпнұсқалығын расталуы сәтті", + "Books": "Кітаптар", + "CameraImageUploadedFrom": "Жаңа сурет {0} камерасынан жүктеп алынды", + "Channels": "Арналар", + "ChapterNameValue": "{0}-сахна", + "Collections": "Жиынтықтар", + "DeviceOfflineWithName": "{0} ажыратылған", + "DeviceOnlineWithName": "{0} қосылған", + "FailedLoginAttemptWithUserName": "{0} тарапынан кіру әрекеті сәтсіз", + "Favorites": "Таңдаулылар", + "Folders": "Қалталар", + "Games": "Ойындар", + "Genres": "Жанрлар", + "HeaderAlbumArtists": "Альбом орындаушылары", + "HeaderCameraUploads": "Камерадан жүктелгендер", + "HeaderContinueWatching": "Қарауды жалғастыру", + "HeaderFavoriteAlbums": "Таңдаулы альбомдар", + "HeaderFavoriteArtists": "Таңдаулы орындаушылар", + "HeaderFavoriteEpisodes": "Таңдаулы бөлімдер", + "HeaderFavoriteShows": "Таңдаулы көрсетімдер", + "HeaderFavoriteSongs": "Таңдаулы әуендер", + "HeaderLiveTV": "Эфир", + "HeaderNextUp": "Кезекті", + "HeaderRecordingGroups": "Жазба топтары", + "HomeVideos": "Үйлік бейнелер", + "Inherit": "Мұраға иелену", + "ItemAddedWithName": "{0} тасығышханаға үстелінді", + "ItemRemovedWithName": "{0} тасығышханадан аласталды", + "LabelIpAddressValue": "IP-мекенжайы: {0}", + "LabelRunningTimeValue": "Іске қосылу уақыты: {0}", + "Latest": "Ең кейінгі", + "MessageApplicationUpdated": "Jellyfin Server жаңартылды.", + "MessageApplicationUpdatedTo": "Jellyfin Server {0} үшін жаңартылды", + "MessageNamedServerConfigurationUpdatedWithValue": "Сервер теңшелімі ({0} бөлімі) жаңартылды", + "MessageServerConfigurationUpdated": "Сервер теңшелімі жаңартылды", + "MixedContent": "Аралас мазмұн", + "Movies": "Фильмдер", + "Music": "Музыка", + "MusicVideos": "Музыкалық бейнелер", + "NameInstallFailed": "{0} орнатылуы сәтсіз", + "NameSeasonNumber": "{0}-маусым", + "NameSeasonUnknown": "Белгісіз маусым", + "NewVersionIsAvailable": "Жаңа Jellyfin Server нұсқасы жүктеп алуға қолжетімді.", + "NotificationOptionApplicationUpdateAvailable": "Қолданба жаңартуы қолжетімді", + "NotificationOptionApplicationUpdateInstalled": "Қолданба жаңартуы орнатылды", + "NotificationOptionAudioPlayback": "Дыбыс ойнатуы басталды", + "NotificationOptionAudioPlaybackStopped": "Дыбыс ойнатуы тоқтатылды", + "NotificationOptionCameraImageUploaded": "Камерадан фотосурет кері қотарылған", + "NotificationOptionGamePlayback": "Ойын ойнатуы басталды", + "NotificationOptionGamePlaybackStopped": "Ойын ойнатуы тоқтатылды", + "NotificationOptionInstallationFailed": "Орнату сәтсіздігі", + "NotificationOptionNewLibraryContent": "Жаңа мазмұн үстелген", + "NotificationOptionPluginError": "Плагин сәтсіздігі", + "NotificationOptionPluginInstalled": "Плагин орнатылды", + "NotificationOptionPluginUninstalled": "Плагин орнатуы болдырылмады", + "NotificationOptionPluginUpdateInstalled": "Плагин жаңартуы орнатылды", + "NotificationOptionServerRestartRequired": "Серверді қайта іске қосу қажет", + "NotificationOptionTaskFailed": "Жоспарлаған тапсырма сәтсіздігі", + "NotificationOptionUserLockedOut": "Пайдаланушы құрсаулы", + "NotificationOptionVideoPlayback": "Бейне ойнатуы басталды", + "NotificationOptionVideoPlaybackStopped": "Бейне ойнатуы тоқтатылды", + "Photos": "Фотосуреттер", + "Playlists": "Ойнату тізімдері", + "Plugin": "Плагин", + "PluginInstalledWithName": "{0} орнатылды", + "PluginUninstalledWithName": "{0} жойылды", + "PluginUpdatedWithName": "{0} жаңартылды", + "ProviderValue": "Жеткізуші: {0}", + "ScheduledTaskFailedWithName": "{0} сәтсіз", + "ScheduledTaskStartedWithName": "{0} іске қосылды", + "ServerNameNeedsToBeRestarted": "{0} қайта іске қосу қажет", + "Shows": "Көрсетімдер", + "Songs": "Әуендер", + "StartupEmbyServerIsLoading": "Jellyfin Server жүктелуде. Әрекетті көп ұзамай қайталаңыз.", + "SubtitleDownloadFailureForItem": "Субтитрлер {0} үшін жүктеліп алынуы сәтсіз", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "{0} үшін субтитрлер жүктеліп алынды", + "Sync": "Үндестіру", + "System": "Жүйе", + "TvShows": "ТД-көрсетімдер", + "User": "Пайдаланушы", + "UserCreatedWithName": "Пайдаланушы {0} жасалған", + "UserDeletedWithName": "Пайдаланушы {0} жойылған", + "UserDownloadingItemWithValues": "{0} мынаны жүктеп алуда: {1}", + "UserLockedOutWithName": "Пайдаланушы {0} құрсаулы", + "UserOfflineFromDevice": "{0} - {1} тарапынан ажыратылған", + "UserOnlineFromDevice": "{0} - {1} арқылы қосылған", + "UserPasswordChangedWithName": "Пайдаланушы {0} үшін құпия сөз өзгертілді", + "UserPolicyUpdatedWithName": "Пайдаланушы {0} үшін саясаттары жаңартылды", + "UserStartedPlayingItemWithValues": "{0} - {1} ойнатуын {2} бастады", + "UserStoppedPlayingItemWithValues": "{0} - {1} ойнатуын {2} тоқтатты", + "ValueHasBeenAddedToLibrary": "{0} (тасығышханаға үстелінді)", + "ValueSpecialEpisodeName": "Арнайы - {0}", + "VersionNumber": "Нұсқасы: {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/ko.json b/Emby.Server.Implementations/Localization/Core/ko.json index ec77856197..04fc52d6ee 100644 --- a/Emby.Server.Implementations/Localization/Core/ko.json +++ b/Emby.Server.Implementations/Localization/Core/ko.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "앨범 아티스트", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "계속 시청하기", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "즐겨찾는 쇼", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin 서버를 불러오고 있습니다. 잠시후 다시시도 해주세요.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "앨범 아티스트", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "계속 시청하기", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "즐겨찾는 쇼", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin 서버를 불러오고 있습니다. 잠시후 다시시도 해주세요.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/lt-LT.json b/Emby.Server.Implementations/Localization/Core/lt-LT.json index bd362c4935..653565db65 100644 --- a/Emby.Server.Implementations/Localization/Core/lt-LT.json +++ b/Emby.Server.Implementations/Localization/Core/lt-LT.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Žanrai", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Žiūrėti toliau", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Filmai", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sinchronizuoti", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Ypatinga - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Žanrai", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Žiūrėti toliau", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Filmai", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sinchronizuoti", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Ypatinga - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/ms.json b/Emby.Server.Implementations/Localization/Core/ms.json index ae74d6f7eb..aaaf097882 100644 --- a/Emby.Server.Implementations/Localization/Core/ms.json +++ b/Emby.Server.Implementations/Localization/Core/ms.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/nb.json b/Emby.Server.Implementations/Localization/Core/nb.json index 779b508c47..ed63aa29c5 100644 --- a/Emby.Server.Implementations/Localization/Core/nb.json +++ b/Emby.Server.Implementations/Localization/Core/nb.json @@ -1,100 +1,100 @@ { - "Albums": "Album", - "AppDeviceValues": "App:{0}, Enhet {1}", - "Application": "Applikasjon", - "Artists": "Artister", - "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert", - "Books": "Bøker", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanaler", - "ChapterNameValue": "Kapittel {0}", - "Collections": "Samlinger", - "DeviceOfflineWithName": "{0} har koblet fra", - "DeviceOnlineWithName": "{0} er tilkoblet", - "FailedLoginAttemptWithUserName": "Mislykket påloggingsforsøk fra {0}", - "Favorites": "Favoritter", - "Folders": "Mapper", - "Games": "Spill", - "Genres": "Sjanger", - "HeaderAlbumArtists": "Albumartist", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Forsett og see på", - "HeaderFavoriteAlbums": "Favoritt albumer", - "HeaderFavoriteArtists": "Favorittartister", - "HeaderFavoriteEpisodes": "Favoritt episode", - "HeaderFavoriteShows": "Favorittserier", - "HeaderFavoriteSongs": "Favorittsanger", - "HeaderLiveTV": "Direkte TV", - "HeaderNextUp": "Neste", - "HeaderRecordingGroups": "Opptak Grupper", - "HomeVideos": "Hjemmelaget filmer", - "Inherit": "Arve", - "ItemAddedWithName": "{0} ble lagt til i biblioteket", - "ItemRemovedWithName": "{0} ble fjernet fra biblioteket", - "LabelIpAddressValue": "IP adresse: {0}", - "LabelRunningTimeValue": "Løpetid {0}", - "Latest": "Siste", - "MessageApplicationUpdated": "Jellyfin server har blitt oppdatert", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert", - "MessageServerConfigurationUpdated": "Server konfigurasjon er oppdatert", - "MixedContent": "Blandet innhold", - "Movies": "Filmer", - "Music": "Musikk", - "MusicVideos": "Musikkvideoer", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Sesong {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig", - "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.", - "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet", - "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet", - "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp", - "NotificationOptionGamePlayback": "Spill avspillingen startet", - "NotificationOptionGamePlaybackStopped": "Filmer", - "NotificationOptionInstallationFailed": "Installasjon feil", - "NotificationOptionNewLibraryContent": "Ny innhold er lagt til", - "NotificationOptionPluginError": "Plugin feil", - "NotificationOptionPluginInstalled": "Plugin installert", - "NotificationOptionPluginUninstalled": "Plugin avinstallert", - "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert", - "NotificationOptionServerRestartRequired": "Server omstart er nødvendig", - "NotificationOptionTaskFailed": "Feil under utføring av planlagt oppgaver", - "NotificationOptionUserLockedOut": "Bruker er utestengt", - "NotificationOptionVideoPlayback": "Video tilbakespilling startet", - "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet", - "Photos": "BIlder", - "Playlists": "Spilleliste", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} ble installert", - "PluginUninstalledWithName": "{0} ble avinstallert", - "PluginUpdatedWithName": "{0} ble oppdatert", - "ProviderValue": "Leverandører: {0}", - "ScheduledTaskFailedWithName": "{0} Mislykkes", - "ScheduledTaskStartedWithName": "{0} Startet", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Programmer", - "Songs": "Sanger", - "StartupEmbyServerIsLoading": "Jellyfin server laster. Prøv igjen snart.", - "SubtitleDownloadFailureForItem": "En feil oppstå under nedlasting av undertekster for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}", - "Sync": "Synk", - "System": "System", - "TvShows": "TV Shows", - "User": "Bruker", - "UserCreatedWithName": "Bruker {0} er opprettet", - "UserDeletedWithName": "Bruker {0} har blitt slettet", - "UserDownloadingItemWithValues": "{0} laster ned {1}", - "UserLockedOutWithName": "Bruker {0} er blitt utestengt", - "UserOfflineFromDevice": "{0} har koblet fra {1}", - "UserOnlineFromDevice": "{0} er tilkoblet fra {1}", - "UserPasswordChangedWithName": "Passordet for {0} er oppdatert", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}", - "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Spesial - {0}", - "VersionNumber": "Versjon {0}" + "Albums": "Album", + "AppDeviceValues": "App:{0}, Enhet {1}", + "Application": "Applikasjon", + "Artists": "Artister", + "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert", + "Books": "Bøker", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanaler", + "ChapterNameValue": "Kapittel {0}", + "Collections": "Samlinger", + "DeviceOfflineWithName": "{0} har koblet fra", + "DeviceOnlineWithName": "{0} er tilkoblet", + "FailedLoginAttemptWithUserName": "Mislykket påloggingsforsøk fra {0}", + "Favorites": "Favoritter", + "Folders": "Mapper", + "Games": "Spill", + "Genres": "Sjanger", + "HeaderAlbumArtists": "Albumartist", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Forsett og see på", + "HeaderFavoriteAlbums": "Favoritt albumer", + "HeaderFavoriteArtists": "Favorittartister", + "HeaderFavoriteEpisodes": "Favoritt episode", + "HeaderFavoriteShows": "Favorittserier", + "HeaderFavoriteSongs": "Favorittsanger", + "HeaderLiveTV": "Direkte TV", + "HeaderNextUp": "Neste", + "HeaderRecordingGroups": "Opptak Grupper", + "HomeVideos": "Hjemmelaget filmer", + "Inherit": "Arve", + "ItemAddedWithName": "{0} ble lagt til i biblioteket", + "ItemRemovedWithName": "{0} ble fjernet fra biblioteket", + "LabelIpAddressValue": "IP adresse: {0}", + "LabelRunningTimeValue": "Løpetid {0}", + "Latest": "Siste", + "MessageApplicationUpdated": "Jellyfin server har blitt oppdatert", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert", + "MessageServerConfigurationUpdated": "Server konfigurasjon er oppdatert", + "MixedContent": "Blandet innhold", + "Movies": "Filmer", + "Music": "Musikk", + "MusicVideos": "Musikkvideoer", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Sesong {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig", + "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.", + "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet", + "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet", + "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp", + "NotificationOptionGamePlayback": "Spill avspillingen startet", + "NotificationOptionGamePlaybackStopped": "Filmer", + "NotificationOptionInstallationFailed": "Installasjon feil", + "NotificationOptionNewLibraryContent": "Ny innhold er lagt til", + "NotificationOptionPluginError": "Plugin feil", + "NotificationOptionPluginInstalled": "Plugin installert", + "NotificationOptionPluginUninstalled": "Plugin avinstallert", + "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert", + "NotificationOptionServerRestartRequired": "Server omstart er nødvendig", + "NotificationOptionTaskFailed": "Feil under utføring av planlagt oppgaver", + "NotificationOptionUserLockedOut": "Bruker er utestengt", + "NotificationOptionVideoPlayback": "Video tilbakespilling startet", + "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet", + "Photos": "BIlder", + "Playlists": "Spilleliste", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} ble installert", + "PluginUninstalledWithName": "{0} ble avinstallert", + "PluginUpdatedWithName": "{0} ble oppdatert", + "ProviderValue": "Leverandører: {0}", + "ScheduledTaskFailedWithName": "{0} Mislykkes", + "ScheduledTaskStartedWithName": "{0} Startet", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Programmer", + "Songs": "Sanger", + "StartupEmbyServerIsLoading": "Jellyfin server laster. Prøv igjen snart.", + "SubtitleDownloadFailureForItem": "En feil oppstå under nedlasting av undertekster for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}", + "Sync": "Synk", + "System": "System", + "TvShows": "TV Shows", + "User": "Bruker", + "UserCreatedWithName": "Bruker {0} er opprettet", + "UserDeletedWithName": "Bruker {0} har blitt slettet", + "UserDownloadingItemWithValues": "{0} laster ned {1}", + "UserLockedOutWithName": "Bruker {0} er blitt utestengt", + "UserOfflineFromDevice": "{0} har koblet fra {1}", + "UserOnlineFromDevice": "{0} er tilkoblet fra {1}", + "UserPasswordChangedWithName": "Passordet for {0} er oppdatert", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}", + "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Spesial - {0}", + "VersionNumber": "Versjon {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 67529ccd9f..7b8c8765ed 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Apparaat: {1}", - "Application": "Toepassing", - "Artists": "Artiesten", - "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd", - "Books": "Boeken", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanalen", - "ChapterNameValue": "Hoofdstuk {0}", - "Collections": "Collecties", - "DeviceOfflineWithName": "{0} is losgekoppeld", - "DeviceOnlineWithName": "{0} is verbonden", - "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}", - "Favorites": "Favorieten", - "Folders": "Mappen", - "Games": "Spellen", - "Genres": "Genres", - "HeaderAlbumArtists": "Album artiesten", - "HeaderCameraUploads": "Camera uploads", - "HeaderContinueWatching": "Kijken hervatten", - "HeaderFavoriteAlbums": "Favoriete albums", - "HeaderFavoriteArtists": "Favoriete artiesten", - "HeaderFavoriteEpisodes": "Favoriete afleveringen", - "HeaderFavoriteShows": "Favoriete shows", - "HeaderFavoriteSongs": "Favoriete titels", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Volgende", - "HeaderRecordingGroups": "Opnamegroepen", - "HomeVideos": "Thuis video's", - "Inherit": "Overerven", - "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek", - "ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek", - "LabelIpAddressValue": "IP adres: {0}", - "LabelRunningTimeValue": "Looptijd: {0}", - "Latest": "Nieuwste", - "MessageApplicationUpdated": "Jellyfin Server is bijgewerkt", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt", - "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt", - "MixedContent": "Gemengde inhoud", - "Movies": "Films", - "Music": "Muziek", - "MusicVideos": "Muziekvideo's", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Seizoen {0}", - "NameSeasonUnknown": "Seizoen onbekend", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar", - "NotificationOptionApplicationUpdateInstalled": "Programma-update geïnstalleerd", - "NotificationOptionAudioPlayback": "Geluid gestart", - "NotificationOptionAudioPlaybackStopped": "Geluid gestopt", - "NotificationOptionCameraImageUploaded": "Camera afbeelding geüpload", - "NotificationOptionGamePlayback": "Spel gestart", - "NotificationOptionGamePlaybackStopped": "Spel gestopt", - "NotificationOptionInstallationFailed": "Installatie mislukt", - "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd", - "NotificationOptionPluginError": "Plug-in fout", - "NotificationOptionPluginInstalled": "Plug-in geïnstalleerd", - "NotificationOptionPluginUninstalled": "Plug-in verwijderd", - "NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd", - "NotificationOptionServerRestartRequired": "Server herstart nodig", - "NotificationOptionTaskFailed": "Geplande taak mislukt", - "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld", - "NotificationOptionVideoPlayback": "Video gestart", - "NotificationOptionVideoPlaybackStopped": "Video gestopt", - "Photos": "Foto's", - "Playlists": "Afspeellijsten", - "Plugin": "Plug-in", - "PluginInstalledWithName": "{0} is geïnstalleerd", - "PluginUninstalledWithName": "{0} is verwijderd", - "PluginUpdatedWithName": "{0} is bijgewerkt", - "ProviderValue": "Aanbieder: {0}", - "ScheduledTaskFailedWithName": "{0} is mislukt", - "ScheduledTaskStartedWithName": "{0} is gestart", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Titels", - "StartupEmbyServerIsLoading": "Jellyfin Server is aan het laden, probeer het later opnieuw.", - "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload", - "Sync": "Synchronisatie", - "System": "Systeem", - "TvShows": "TV-series", - "User": "Gebruiker", - "UserCreatedWithName": "Gebruiker {0} is aangemaakt", - "UserDeletedWithName": "Gebruiker {0} is verwijderd", - "UserDownloadingItemWithValues": "{0} download {1}", - "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld", - "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken", - "UserOnlineFromDevice": "{0} heeft verbinding met {1}", - "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", - "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}", - "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart", - "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Speciaal - {0}", - "VersionNumber": "Versie {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Apparaat: {1}", + "Application": "Toepassing", + "Artists": "Artiesten", + "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd", + "Books": "Boeken", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanalen", + "ChapterNameValue": "Hoofdstuk {0}", + "Collections": "Collecties", + "DeviceOfflineWithName": "{0} is losgekoppeld", + "DeviceOnlineWithName": "{0} is verbonden", + "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}", + "Favorites": "Favorieten", + "Folders": "Mappen", + "Games": "Spellen", + "Genres": "Genres", + "HeaderAlbumArtists": "Album artiesten", + "HeaderCameraUploads": "Camera uploads", + "HeaderContinueWatching": "Kijken hervatten", + "HeaderFavoriteAlbums": "Favoriete albums", + "HeaderFavoriteArtists": "Favoriete artiesten", + "HeaderFavoriteEpisodes": "Favoriete afleveringen", + "HeaderFavoriteShows": "Favoriete shows", + "HeaderFavoriteSongs": "Favoriete titels", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Volgende", + "HeaderRecordingGroups": "Opnamegroepen", + "HomeVideos": "Thuis video's", + "Inherit": "Overerven", + "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek", + "ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek", + "LabelIpAddressValue": "IP adres: {0}", + "LabelRunningTimeValue": "Looptijd: {0}", + "Latest": "Nieuwste", + "MessageApplicationUpdated": "Jellyfin Server is bijgewerkt", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt", + "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt", + "MixedContent": "Gemengde inhoud", + "Movies": "Films", + "Music": "Muziek", + "MusicVideos": "Muziekvideo's", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Seizoen {0}", + "NameSeasonUnknown": "Seizoen onbekend", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar", + "NotificationOptionApplicationUpdateInstalled": "Programma-update geïnstalleerd", + "NotificationOptionAudioPlayback": "Geluid gestart", + "NotificationOptionAudioPlaybackStopped": "Geluid gestopt", + "NotificationOptionCameraImageUploaded": "Camera afbeelding geüpload", + "NotificationOptionGamePlayback": "Spel gestart", + "NotificationOptionGamePlaybackStopped": "Spel gestopt", + "NotificationOptionInstallationFailed": "Installatie mislukt", + "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd", + "NotificationOptionPluginError": "Plug-in fout", + "NotificationOptionPluginInstalled": "Plug-in geïnstalleerd", + "NotificationOptionPluginUninstalled": "Plug-in verwijderd", + "NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd", + "NotificationOptionServerRestartRequired": "Server herstart nodig", + "NotificationOptionTaskFailed": "Geplande taak mislukt", + "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld", + "NotificationOptionVideoPlayback": "Video gestart", + "NotificationOptionVideoPlaybackStopped": "Video gestopt", + "Photos": "Foto's", + "Playlists": "Afspeellijsten", + "Plugin": "Plug-in", + "PluginInstalledWithName": "{0} is geïnstalleerd", + "PluginUninstalledWithName": "{0} is verwijderd", + "PluginUpdatedWithName": "{0} is bijgewerkt", + "ProviderValue": "Aanbieder: {0}", + "ScheduledTaskFailedWithName": "{0} is mislukt", + "ScheduledTaskStartedWithName": "{0} is gestart", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Titels", + "StartupEmbyServerIsLoading": "Jellyfin Server is aan het laden, probeer het later opnieuw.", + "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload", + "Sync": "Synchronisatie", + "System": "Systeem", + "TvShows": "TV-series", + "User": "Gebruiker", + "UserCreatedWithName": "Gebruiker {0} is aangemaakt", + "UserDeletedWithName": "Gebruiker {0} is verwijderd", + "UserDownloadingItemWithValues": "{0} download {1}", + "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld", + "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken", + "UserOnlineFromDevice": "{0} heeft verbinding met {1}", + "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", + "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}", + "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart", + "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Speciaal - {0}", + "VersionNumber": "Versie {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/pl.json b/Emby.Server.Implementations/Localization/Core/pl.json index 82ee1becdf..5aefa740be 100644 --- a/Emby.Server.Implementations/Localization/Core/pl.json +++ b/Emby.Server.Implementations/Localization/Core/pl.json @@ -1,100 +1,100 @@ { - "Albums": "Albumy", - "AppDeviceValues": "Aplikacja: {0}, Urządzenie: {1}", - "Application": "Aplikacja", - "Artists": "Wykonawcy", - "AuthenticationSucceededWithUserName": "{0} został pomyślnie uwierzytelniony", - "Books": "Książki", - "CameraImageUploadedFrom": "Nowy obraz został przekazany z {0}", - "Channels": "Kanały", - "ChapterNameValue": "Rozdział {0}", - "Collections": "Kolekcje", - "DeviceOfflineWithName": "{0} został rozłączony", - "DeviceOnlineWithName": "{0} połączył się", - "FailedLoginAttemptWithUserName": "Próba logowania przez {0} zakończona niepowodzeniem", - "Favorites": "Ulubione", - "Folders": "Foldery", - "Games": "Gry", - "Genres": "Gatunki", - "HeaderAlbumArtists": "Wykonawcy albumów", - "HeaderCameraUploads": "Przekazane obrazy", - "HeaderContinueWatching": "Kontynuuj odtwarzanie", - "HeaderFavoriteAlbums": "Albumy ulubione", - "HeaderFavoriteArtists": "Wykonawcy ulubieni", - "HeaderFavoriteEpisodes": "Odcinki ulubione", - "HeaderFavoriteShows": "Seriale ulubione", - "HeaderFavoriteSongs": "Utwory ulubione", - "HeaderLiveTV": "Telewizja", - "HeaderNextUp": "Do obejrzenia", - "HeaderRecordingGroups": "Grupy nagrań", - "HomeVideos": "Nagrania prywatne", - "Inherit": "Dziedzicz", - "ItemAddedWithName": "{0} zostało dodane do biblioteki", - "ItemRemovedWithName": "{0} zostało usunięte z biblioteki", - "LabelIpAddressValue": "Adres IP: {0}", - "LabelRunningTimeValue": "Czas trwania: {0}", - "Latest": "Ostatnio dodane", - "MessageApplicationUpdated": "Serwer Jellyfin został zaktualizowany", - "MessageApplicationUpdatedTo": "Serwer Jellyfin został zaktualizowany do wersji {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera została zaktualizowana", - "MessageServerConfigurationUpdated": "Konfiguracja serwera została zaktualizowana", - "MixedContent": "Zawartość mieszana", - "Movies": "Filmy", - "Music": "Muzyka", - "MusicVideos": "Teledyski", - "NameInstallFailed": "Instalacja {0} nieudana.", - "NameSeasonNumber": "Sezon {0}", - "NameSeasonUnknown": "Sezon nieznany", - "NewVersionIsAvailable": "Nowa wersja serwera Jellyfin jest dostępna do pobrania.", - "NotificationOptionApplicationUpdateAvailable": "Dostępna aktualizacja aplikacji", - "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizację aplikacji", - "NotificationOptionAudioPlayback": "Rozpoczęto odtwarzanie muzyki", - "NotificationOptionAudioPlaybackStopped": "Odtwarzane dźwięku zatrzymane", - "NotificationOptionCameraImageUploaded": "Przekazano obraz z urządzenia mobilnego", - "NotificationOptionGamePlayback": "Odtwarzanie gry rozpoczęte", - "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane", - "NotificationOptionInstallationFailed": "Niepowodzenie instalacji", - "NotificationOptionNewLibraryContent": "Dodano nową zawartość", - "NotificationOptionPluginError": "Awaria wtyczki", - "NotificationOptionPluginInstalled": "Zainstalowano wtyczkę", - "NotificationOptionPluginUninstalled": "Odinstalowano wtyczkę", - "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizację wtyczki", - "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera", - "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania", - "NotificationOptionUserLockedOut": "Użytkownik zablokowany", - "NotificationOptionVideoPlayback": "Rozpoczęto odtwarzanie wideo", - "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane", - "Photos": "Zdjęcia", - "Playlists": "Listy odtwarzania", - "Plugin": "Wtyczka", - "PluginInstalledWithName": "{0} zostało zainstalowane", - "PluginUninstalledWithName": "{0} odinstalowane", - "PluginUpdatedWithName": "{0} zaktualizowane", - "ProviderValue": "Dostawca: {0}", - "ScheduledTaskFailedWithName": "Nieudane {0}", - "ScheduledTaskStartedWithName": "Rozpoczęto {0}", - "ServerNameNeedsToBeRestarted": "{0} wymaga ponownego uruchomienia", - "Shows": "Seriale", - "Songs": "Utwory", - "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Jellyfin. Spróbuj ponownie za chwilę.", - "SubtitleDownloadFailureForItem": "Pobieranie napisów dla {0} zakończone niepowodzeniem", - "SubtitleDownloadFailureFromForItem": "Nieudane pobieranie napisów z {0} dla {1}", - "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}", - "Sync": "Synchronizacja", - "System": "System", - "TvShows": "Seriale", - "User": "Użytkownik", - "UserCreatedWithName": "Użytkownik {0} został utworzony", - "UserDeletedWithName": "Użytkownik {0} został usunięty", - "UserDownloadingItemWithValues": "{0} pobiera {1}", - "UserLockedOutWithName": "Użytkownik {0} został zablokowany", - "UserOfflineFromDevice": "{0} z {1} został rozłączony", - "UserOnlineFromDevice": "{0} połączył się z {1}", - "UserPasswordChangedWithName": "Hasło użytkownika {0} zostało zmienione", - "UserPolicyUpdatedWithName": "Zmieniono zasady użytkowania dla {0}", - "UserStartedPlayingItemWithValues": "{0} odtwarza {1} na {2}", - "UserStoppedPlayingItemWithValues": "{0} zakończył odtwarzanie {1} na {2}", - "ValueHasBeenAddedToLibrary": "{0} został dodany to biblioteki mediów", - "ValueSpecialEpisodeName": "Specjalne - {0}", - "VersionNumber": "Wersja {0}" + "Albums": "Albumy", + "AppDeviceValues": "Aplikacja: {0}, Urządzenie: {1}", + "Application": "Aplikacja", + "Artists": "Wykonawcy", + "AuthenticationSucceededWithUserName": "{0} został pomyślnie uwierzytelniony", + "Books": "Książki", + "CameraImageUploadedFrom": "Nowy obraz został przekazany z {0}", + "Channels": "Kanały", + "ChapterNameValue": "Rozdział {0}", + "Collections": "Kolekcje", + "DeviceOfflineWithName": "{0} został rozłączony", + "DeviceOnlineWithName": "{0} połączył się", + "FailedLoginAttemptWithUserName": "Próba logowania przez {0} zakończona niepowodzeniem", + "Favorites": "Ulubione", + "Folders": "Foldery", + "Games": "Gry", + "Genres": "Gatunki", + "HeaderAlbumArtists": "Wykonawcy albumów", + "HeaderCameraUploads": "Przekazane obrazy", + "HeaderContinueWatching": "Kontynuuj odtwarzanie", + "HeaderFavoriteAlbums": "Albumy ulubione", + "HeaderFavoriteArtists": "Wykonawcy ulubieni", + "HeaderFavoriteEpisodes": "Odcinki ulubione", + "HeaderFavoriteShows": "Seriale ulubione", + "HeaderFavoriteSongs": "Utwory ulubione", + "HeaderLiveTV": "Telewizja", + "HeaderNextUp": "Do obejrzenia", + "HeaderRecordingGroups": "Grupy nagrań", + "HomeVideos": "Nagrania prywatne", + "Inherit": "Dziedzicz", + "ItemAddedWithName": "{0} zostało dodane do biblioteki", + "ItemRemovedWithName": "{0} zostało usunięte z biblioteki", + "LabelIpAddressValue": "Adres IP: {0}", + "LabelRunningTimeValue": "Czas trwania: {0}", + "Latest": "Ostatnio dodane", + "MessageApplicationUpdated": "Serwer Jellyfin został zaktualizowany", + "MessageApplicationUpdatedTo": "Serwer Jellyfin został zaktualizowany do wersji {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera została zaktualizowana", + "MessageServerConfigurationUpdated": "Konfiguracja serwera została zaktualizowana", + "MixedContent": "Zawartość mieszana", + "Movies": "Filmy", + "Music": "Muzyka", + "MusicVideos": "Teledyski", + "NameInstallFailed": "Instalacja {0} nieudana.", + "NameSeasonNumber": "Sezon {0}", + "NameSeasonUnknown": "Sezon nieznany", + "NewVersionIsAvailable": "Nowa wersja serwera Jellyfin jest dostępna do pobrania.", + "NotificationOptionApplicationUpdateAvailable": "Dostępna aktualizacja aplikacji", + "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizację aplikacji", + "NotificationOptionAudioPlayback": "Rozpoczęto odtwarzanie muzyki", + "NotificationOptionAudioPlaybackStopped": "Odtwarzane dźwięku zatrzymane", + "NotificationOptionCameraImageUploaded": "Przekazano obraz z urządzenia mobilnego", + "NotificationOptionGamePlayback": "Odtwarzanie gry rozpoczęte", + "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane", + "NotificationOptionInstallationFailed": "Niepowodzenie instalacji", + "NotificationOptionNewLibraryContent": "Dodano nową zawartość", + "NotificationOptionPluginError": "Awaria wtyczki", + "NotificationOptionPluginInstalled": "Zainstalowano wtyczkę", + "NotificationOptionPluginUninstalled": "Odinstalowano wtyczkę", + "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizację wtyczki", + "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera", + "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania", + "NotificationOptionUserLockedOut": "Użytkownik zablokowany", + "NotificationOptionVideoPlayback": "Rozpoczęto odtwarzanie wideo", + "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane", + "Photos": "Zdjęcia", + "Playlists": "Listy odtwarzania", + "Plugin": "Wtyczka", + "PluginInstalledWithName": "{0} zostało zainstalowane", + "PluginUninstalledWithName": "{0} odinstalowane", + "PluginUpdatedWithName": "{0} zaktualizowane", + "ProviderValue": "Dostawca: {0}", + "ScheduledTaskFailedWithName": "Nieudane {0}", + "ScheduledTaskStartedWithName": "Rozpoczęto {0}", + "ServerNameNeedsToBeRestarted": "{0} wymaga ponownego uruchomienia", + "Shows": "Seriale", + "Songs": "Utwory", + "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Jellyfin. Spróbuj ponownie za chwilę.", + "SubtitleDownloadFailureForItem": "Pobieranie napisów dla {0} zakończone niepowodzeniem", + "SubtitleDownloadFailureFromForItem": "Nieudane pobieranie napisów z {0} dla {1}", + "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}", + "Sync": "Synchronizacja", + "System": "System", + "TvShows": "Seriale", + "User": "Użytkownik", + "UserCreatedWithName": "Użytkownik {0} został utworzony", + "UserDeletedWithName": "Użytkownik {0} został usunięty", + "UserDownloadingItemWithValues": "{0} pobiera {1}", + "UserLockedOutWithName": "Użytkownik {0} został zablokowany", + "UserOfflineFromDevice": "{0} z {1} został rozłączony", + "UserOnlineFromDevice": "{0} połączył się z {1}", + "UserPasswordChangedWithName": "Hasło użytkownika {0} zostało zmienione", + "UserPolicyUpdatedWithName": "Zmieniono zasady użytkowania dla {0}", + "UserStartedPlayingItemWithValues": "{0} odtwarza {1} na {2}", + "UserStoppedPlayingItemWithValues": "{0} zakończył odtwarzanie {1} na {2}", + "ValueHasBeenAddedToLibrary": "{0} został dodany to biblioteki mediów", + "ValueSpecialEpisodeName": "Specjalne - {0}", + "VersionNumber": "Wersja {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/pt-BR.json b/Emby.Server.Implementations/Localization/Core/pt-BR.json index 84c29174bd..9ae25d3ac9 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-BR.json +++ b/Emby.Server.Implementations/Localization/Core/pt-BR.json @@ -1,100 +1,100 @@ { - "Albums": "Álbuns", - "AppDeviceValues": "App: {0}, Dispositivo: {1}", - "Application": "Aplicativo", - "Artists": "Artistas", - "AuthenticationSucceededWithUserName": "{0} autenticado com sucesso", - "Books": "Livros", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Canais", - "ChapterNameValue": "Capítulo {0}", - "Collections": "Coletâneas", - "DeviceOfflineWithName": "{0} se desconectou", - "DeviceOnlineWithName": "{0} está conectado", - "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}", - "Favorites": "Favoritos", - "Folders": "Pastas", - "Games": "Jogos", - "Genres": "Gêneros", - "HeaderAlbumArtists": "Artistas do Álbum", - "HeaderCameraUploads": "Uploads da Câmera", - "HeaderContinueWatching": "Continuar Assistindo", - "HeaderFavoriteAlbums": "Álbuns Favoritos", - "HeaderFavoriteArtists": "Artistas Favoritos", - "HeaderFavoriteEpisodes": "Episódios Favoritos", - "HeaderFavoriteShows": "Séries Favoritas", - "HeaderFavoriteSongs": "Músicas Favoritas", - "HeaderLiveTV": "TV ao Vivo", - "HeaderNextUp": "Próximos", - "HeaderRecordingGroups": "Grupos de Gravação", - "HomeVideos": "Vídeos caseiros", - "Inherit": "Herdar", - "ItemAddedWithName": "{0} foi adicionado à biblioteca", - "ItemRemovedWithName": "{0} foi removido da biblioteca", - "LabelIpAddressValue": "Endereço ip: {0}", - "LabelRunningTimeValue": "Tempo de execução: {0}", - "Latest": "Recente", - "MessageApplicationUpdated": "O servidor Jellyfin foi atualizado", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "A seção {0} da configuração do servidor foi atualizada", - "MessageServerConfigurationUpdated": "A configuração do servidor foi atualizada", - "MixedContent": "Conteúdo misto", - "Movies": "Filmes", - "Music": "Música", - "MusicVideos": "Vídeos musicais", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Temporada {0}", - "NameSeasonUnknown": "Temporada Desconhecida", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Atualização de aplicativo disponível", - "NotificationOptionApplicationUpdateInstalled": "Atualização de aplicativo instalada", - "NotificationOptionAudioPlayback": "Reprodução de áudio iniciada", - "NotificationOptionAudioPlaybackStopped": "Reprodução de áudio parada", - "NotificationOptionCameraImageUploaded": "Imagem de câmera enviada", - "NotificationOptionGamePlayback": "Reprodução de jogo iniciada", - "NotificationOptionGamePlaybackStopped": "Reprodução de jogo parada", - "NotificationOptionInstallationFailed": "Falha na instalação", - "NotificationOptionNewLibraryContent": "Novo conteúdo adicionado", - "NotificationOptionPluginError": "Falha de plugin", - "NotificationOptionPluginInstalled": "Plugin instalado", - "NotificationOptionPluginUninstalled": "Plugin desinstalado", - "NotificationOptionPluginUpdateInstalled": "Atualização de plugin instalada", - "NotificationOptionServerRestartRequired": "Necessário reiniciar servidor", - "NotificationOptionTaskFailed": "Falha na tarefa agendada", - "NotificationOptionUserLockedOut": "Usuário bloqueado", - "NotificationOptionVideoPlayback": "Reprodução de vídeo iniciada", - "NotificationOptionVideoPlaybackStopped": "Reprodução de vídeo parada", - "Photos": "Fotos", - "Playlists": "Listas de Reprodução", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} foi instalado", - "PluginUninstalledWithName": "{0} foi desinstalado", - "PluginUpdatedWithName": "{0} foi atualizado", - "ProviderValue": "Provedor: {0}", - "ScheduledTaskFailedWithName": "{0} falhou", - "ScheduledTaskStartedWithName": "{0} iniciada", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Séries", - "Songs": "Músicas", - "StartupEmbyServerIsLoading": "O Servidor Jellyfin está carregando. Por favor tente novamente em breve.", - "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Legendas baixadas para {0}", - "Sync": "Sincronizar", - "System": "Sistema", - "TvShows": "Séries de TV", - "User": "Usuário", - "UserCreatedWithName": "O usuário {0} foi criado", - "UserDeletedWithName": "O usuário {0} foi excluído", - "UserDownloadingItemWithValues": "{0} está baixando {1}", - "UserLockedOutWithName": "Usuário {0} foi bloqueado", - "UserOfflineFromDevice": "{0} se desconectou de {1}", - "UserOnlineFromDevice": "{0} está ativo em {1}", - "UserPasswordChangedWithName": "A senha foi alterada para o usuário {0}", - "UserPolicyUpdatedWithName": "A política de usuário foi atualizada para {0}", - "UserStartedPlayingItemWithValues": "{0} iniciou a reprodução de {1}", - "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Especial - {0}", - "VersionNumber": "Versão {0}" + "Albums": "Álbuns", + "AppDeviceValues": "App: {0}, Dispositivo: {1}", + "Application": "Aplicativo", + "Artists": "Artistas", + "AuthenticationSucceededWithUserName": "{0} autenticado com sucesso", + "Books": "Livros", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Canais", + "ChapterNameValue": "Capítulo {0}", + "Collections": "Coletâneas", + "DeviceOfflineWithName": "{0} se desconectou", + "DeviceOnlineWithName": "{0} está conectado", + "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}", + "Favorites": "Favoritos", + "Folders": "Pastas", + "Games": "Jogos", + "Genres": "Gêneros", + "HeaderAlbumArtists": "Artistas do Álbum", + "HeaderCameraUploads": "Uploads da Câmera", + "HeaderContinueWatching": "Continuar Assistindo", + "HeaderFavoriteAlbums": "Álbuns Favoritos", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteEpisodes": "Episódios Favoritos", + "HeaderFavoriteShows": "Séries Favoritas", + "HeaderFavoriteSongs": "Músicas Favoritas", + "HeaderLiveTV": "TV ao Vivo", + "HeaderNextUp": "Próximos", + "HeaderRecordingGroups": "Grupos de Gravação", + "HomeVideos": "Vídeos caseiros", + "Inherit": "Herdar", + "ItemAddedWithName": "{0} foi adicionado à biblioteca", + "ItemRemovedWithName": "{0} foi removido da biblioteca", + "LabelIpAddressValue": "Endereço ip: {0}", + "LabelRunningTimeValue": "Tempo de execução: {0}", + "Latest": "Recente", + "MessageApplicationUpdated": "O servidor Jellyfin foi atualizado", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "A seção {0} da configuração do servidor foi atualizada", + "MessageServerConfigurationUpdated": "A configuração do servidor foi atualizada", + "MixedContent": "Conteúdo misto", + "Movies": "Filmes", + "Music": "Música", + "MusicVideos": "Vídeos musicais", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Temporada {0}", + "NameSeasonUnknown": "Temporada Desconhecida", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Atualização de aplicativo disponível", + "NotificationOptionApplicationUpdateInstalled": "Atualização de aplicativo instalada", + "NotificationOptionAudioPlayback": "Reprodução de áudio iniciada", + "NotificationOptionAudioPlaybackStopped": "Reprodução de áudio parada", + "NotificationOptionCameraImageUploaded": "Imagem de câmera enviada", + "NotificationOptionGamePlayback": "Reprodução de jogo iniciada", + "NotificationOptionGamePlaybackStopped": "Reprodução de jogo parada", + "NotificationOptionInstallationFailed": "Falha na instalação", + "NotificationOptionNewLibraryContent": "Novo conteúdo adicionado", + "NotificationOptionPluginError": "Falha de plugin", + "NotificationOptionPluginInstalled": "Plugin instalado", + "NotificationOptionPluginUninstalled": "Plugin desinstalado", + "NotificationOptionPluginUpdateInstalled": "Atualização de plugin instalada", + "NotificationOptionServerRestartRequired": "Necessário reiniciar servidor", + "NotificationOptionTaskFailed": "Falha na tarefa agendada", + "NotificationOptionUserLockedOut": "Usuário bloqueado", + "NotificationOptionVideoPlayback": "Reprodução de vídeo iniciada", + "NotificationOptionVideoPlaybackStopped": "Reprodução de vídeo parada", + "Photos": "Fotos", + "Playlists": "Listas de Reprodução", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} foi instalado", + "PluginUninstalledWithName": "{0} foi desinstalado", + "PluginUpdatedWithName": "{0} foi atualizado", + "ProviderValue": "Provedor: {0}", + "ScheduledTaskFailedWithName": "{0} falhou", + "ScheduledTaskStartedWithName": "{0} iniciada", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Séries", + "Songs": "Músicas", + "StartupEmbyServerIsLoading": "O Servidor Jellyfin está carregando. Por favor tente novamente em breve.", + "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Legendas baixadas para {0}", + "Sync": "Sincronizar", + "System": "Sistema", + "TvShows": "Séries de TV", + "User": "Usuário", + "UserCreatedWithName": "O usuário {0} foi criado", + "UserDeletedWithName": "O usuário {0} foi excluído", + "UserDownloadingItemWithValues": "{0} está baixando {1}", + "UserLockedOutWithName": "Usuário {0} foi bloqueado", + "UserOfflineFromDevice": "{0} se desconectou de {1}", + "UserOnlineFromDevice": "{0} está ativo em {1}", + "UserPasswordChangedWithName": "A senha foi alterada para o usuário {0}", + "UserPolicyUpdatedWithName": "A política de usuário foi atualizada para {0}", + "UserStartedPlayingItemWithValues": "{0} iniciou a reprodução de {1}", + "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Especial - {0}", + "VersionNumber": "Versão {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index 0d3acc9c15..59c25f0e3d 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Aplicação", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continuar a ver", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Séries Favoritas", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Especial - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Aplicação", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continuar a ver", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Séries Favoritas", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Especial - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json index 97216f2765..338141294c 100644 --- a/Emby.Server.Implementations/Localization/Core/ru.json +++ b/Emby.Server.Implementations/Localization/Core/ru.json @@ -1,100 +1,100 @@ { - "Albums": "Альбомы", - "AppDeviceValues": "Прил.: {0}, Устр.: {1}", - "Application": "Приложение", - "Artists": "Исполнители", - "AuthenticationSucceededWithUserName": "{0} - авторизация успешна", - "Books": "Литература", - "CameraImageUploadedFrom": "Новое фото было выложено с {0}", - "Channels": "Каналы", - "ChapterNameValue": "Сцена {0}", - "Collections": "Коллекции", - "DeviceOfflineWithName": "{0} - подкл. разъ-но", - "DeviceOnlineWithName": "{0} - подкл. уст-но", - "FailedLoginAttemptWithUserName": "{0} - попытка входа неудачна", - "Favorites": "Избранное", - "Folders": "Папки", - "Games": "Игры", - "Genres": "Жанры", - "HeaderAlbumArtists": "Исп-ли альбома", - "HeaderCameraUploads": "Камеры", - "HeaderContinueWatching": "Продолжение просмотра", - "HeaderFavoriteAlbums": "Избранные альбомы", - "HeaderFavoriteArtists": "Избранные исполнители", - "HeaderFavoriteEpisodes": "Избранные эпизоды", - "HeaderFavoriteShows": "Избранные передачи", - "HeaderFavoriteSongs": "Избранные композиции", - "HeaderLiveTV": "Эфир", - "HeaderNextUp": "Очередное", - "HeaderRecordingGroups": "Группы записей", - "HomeVideos": "Дом. видео", - "Inherit": "Наследуемое", - "ItemAddedWithName": "{0} - добавлено в медиатеку", - "ItemRemovedWithName": "{0} - изъято из медиатеки", - "LabelIpAddressValue": "IP-адрес: {0}", - "LabelRunningTimeValue": "Время выполнения: {0}", - "Latest": "Новейшее", - "MessageApplicationUpdated": "Jellyfin Server был обновлён", - "MessageApplicationUpdatedTo": "Jellyfin Server был обновлён до {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Конфиг-ия сервера (раздел {0}) была обновлена", - "MessageServerConfigurationUpdated": "Конфиг-ия сервера была обновлена", - "MixedContent": "Смешанное содержание", - "Movies": "Кино", - "Music": "Музыка", - "MusicVideos": "Муз. видео", - "NameInstallFailed": "Установка {0} неудачна", - "NameSeasonNumber": "Сезон {0}", - "NameSeasonUnknown": "Сезон неопознан", - "NewVersionIsAvailable": "Имеется новая версия Jellyfin Server", - "NotificationOptionApplicationUpdateAvailable": "Имеется обновление приложения", - "NotificationOptionApplicationUpdateInstalled": "Обновление приложения установлено", - "NotificationOptionAudioPlayback": "Воспр-ие аудио зап-но", - "NotificationOptionAudioPlaybackStopped": "Восп-ие аудио ост-но", - "NotificationOptionCameraImageUploaded": "Произведена выкладка отснятого с камеры", - "NotificationOptionGamePlayback": "Воспр-ие игры зап-но", - "NotificationOptionGamePlaybackStopped": "Восп-ие игры ост-но", - "NotificationOptionInstallationFailed": "Сбой установки", - "NotificationOptionNewLibraryContent": "Новое содержание добавлено", - "NotificationOptionPluginError": "Сбой плагина", - "NotificationOptionPluginInstalled": "Плагин установлен", - "NotificationOptionPluginUninstalled": "Плагин удалён", - "NotificationOptionPluginUpdateInstalled": "Обновление плагина установлено", - "NotificationOptionServerRestartRequired": "Требуется перезапуск сервера", - "NotificationOptionTaskFailed": "Сбой назначенной задачи", - "NotificationOptionUserLockedOut": "Пользователь заблокирован", - "NotificationOptionVideoPlayback": "Воспр-ие видео зап-но", - "NotificationOptionVideoPlaybackStopped": "Восп-ие видео ост-но", - "Photos": "Фото", - "Playlists": "Плей-листы", - "Plugin": "Плагин", - "PluginInstalledWithName": "{0} - было установлено", - "PluginUninstalledWithName": "{0} - было удалено", - "PluginUpdatedWithName": "{0} - было обновлено", - "ProviderValue": "Поставщик: {0}", - "ScheduledTaskFailedWithName": "{0} - неудачна", - "ScheduledTaskStartedWithName": "{0} - запущена", - "ServerNameNeedsToBeRestarted": "Необходим перезапуск {0}", - "Shows": "Передачи", - "Songs": "Композиции", - "StartupEmbyServerIsLoading": "Jellyfin Server загружается. Повторите попытку в ближайшее время.", - "SubtitleDownloadFailureForItem": "Субтитры к {0} не удалось загрузить", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Субтитры к {0} загружены", - "Sync": "Синхро", - "System": "Система", - "TvShows": "ТВ", - "User": "Польз-ль", - "UserCreatedWithName": "Пользователь {0} был создан", - "UserDeletedWithName": "Пользователь {0} был удалён", - "UserDownloadingItemWithValues": "{0} загружает {1}", - "UserLockedOutWithName": "Пользователь {0} был заблокирован", - "UserOfflineFromDevice": "{0} - подкл. с {1} разъ-но", - "UserOnlineFromDevice": "{0} - подкл. с {1} уст-но", - "UserPasswordChangedWithName": "Пароль польз-ля {0} был изменён", - "UserPolicyUpdatedWithName": "Польз-ие политики {0} были обновлены", - "UserStartedPlayingItemWithValues": "{0} - воспр. «{1}» на {2}", - "UserStoppedPlayingItemWithValues": "{0} - воспр. «{1}» ост-но на {2}", - "ValueHasBeenAddedToLibrary": "{0} (добавлено в медиатеку)", - "ValueSpecialEpisodeName": "Спецэпизод - {0}", - "VersionNumber": "Версия {0}" + "Albums": "Альбомы", + "AppDeviceValues": "Прил.: {0}, Устр.: {1}", + "Application": "Приложение", + "Artists": "Исполнители", + "AuthenticationSucceededWithUserName": "{0} - авторизация успешна", + "Books": "Литература", + "CameraImageUploadedFrom": "Новое фото было выложено с {0}", + "Channels": "Каналы", + "ChapterNameValue": "Сцена {0}", + "Collections": "Коллекции", + "DeviceOfflineWithName": "{0} - подкл. разъ-но", + "DeviceOnlineWithName": "{0} - подкл. уст-но", + "FailedLoginAttemptWithUserName": "{0} - попытка входа неудачна", + "Favorites": "Избранное", + "Folders": "Папки", + "Games": "Игры", + "Genres": "Жанры", + "HeaderAlbumArtists": "Исп-ли альбома", + "HeaderCameraUploads": "Камеры", + "HeaderContinueWatching": "Продолжение просмотра", + "HeaderFavoriteAlbums": "Избранные альбомы", + "HeaderFavoriteArtists": "Избранные исполнители", + "HeaderFavoriteEpisodes": "Избранные эпизоды", + "HeaderFavoriteShows": "Избранные передачи", + "HeaderFavoriteSongs": "Избранные композиции", + "HeaderLiveTV": "Эфир", + "HeaderNextUp": "Очередное", + "HeaderRecordingGroups": "Группы записей", + "HomeVideos": "Дом. видео", + "Inherit": "Наследуемое", + "ItemAddedWithName": "{0} - добавлено в медиатеку", + "ItemRemovedWithName": "{0} - изъято из медиатеки", + "LabelIpAddressValue": "IP-адрес: {0}", + "LabelRunningTimeValue": "Время выполнения: {0}", + "Latest": "Новейшее", + "MessageApplicationUpdated": "Jellyfin Server был обновлён", + "MessageApplicationUpdatedTo": "Jellyfin Server был обновлён до {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Конфиг-ия сервера (раздел {0}) была обновлена", + "MessageServerConfigurationUpdated": "Конфиг-ия сервера была обновлена", + "MixedContent": "Смешанное содержание", + "Movies": "Кино", + "Music": "Музыка", + "MusicVideos": "Муз. видео", + "NameInstallFailed": "Установка {0} неудачна", + "NameSeasonNumber": "Сезон {0}", + "NameSeasonUnknown": "Сезон неопознан", + "NewVersionIsAvailable": "Имеется новая версия Jellyfin Server", + "NotificationOptionApplicationUpdateAvailable": "Имеется обновление приложения", + "NotificationOptionApplicationUpdateInstalled": "Обновление приложения установлено", + "NotificationOptionAudioPlayback": "Воспр-ие аудио зап-но", + "NotificationOptionAudioPlaybackStopped": "Восп-ие аудио ост-но", + "NotificationOptionCameraImageUploaded": "Произведена выкладка отснятого с камеры", + "NotificationOptionGamePlayback": "Воспр-ие игры зап-но", + "NotificationOptionGamePlaybackStopped": "Восп-ие игры ост-но", + "NotificationOptionInstallationFailed": "Сбой установки", + "NotificationOptionNewLibraryContent": "Новое содержание добавлено", + "NotificationOptionPluginError": "Сбой плагина", + "NotificationOptionPluginInstalled": "Плагин установлен", + "NotificationOptionPluginUninstalled": "Плагин удалён", + "NotificationOptionPluginUpdateInstalled": "Обновление плагина установлено", + "NotificationOptionServerRestartRequired": "Требуется перезапуск сервера", + "NotificationOptionTaskFailed": "Сбой назначенной задачи", + "NotificationOptionUserLockedOut": "Пользователь заблокирован", + "NotificationOptionVideoPlayback": "Воспр-ие видео зап-но", + "NotificationOptionVideoPlaybackStopped": "Восп-ие видео ост-но", + "Photos": "Фото", + "Playlists": "Плей-листы", + "Plugin": "Плагин", + "PluginInstalledWithName": "{0} - было установлено", + "PluginUninstalledWithName": "{0} - было удалено", + "PluginUpdatedWithName": "{0} - было обновлено", + "ProviderValue": "Поставщик: {0}", + "ScheduledTaskFailedWithName": "{0} - неудачна", + "ScheduledTaskStartedWithName": "{0} - запущена", + "ServerNameNeedsToBeRestarted": "Необходим перезапуск {0}", + "Shows": "Передачи", + "Songs": "Композиции", + "StartupEmbyServerIsLoading": "Jellyfin Server загружается. Повторите попытку в ближайшее время.", + "SubtitleDownloadFailureForItem": "Субтитры к {0} не удалось загрузить", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Субтитры к {0} загружены", + "Sync": "Синхро", + "System": "Система", + "TvShows": "ТВ", + "User": "Польз-ль", + "UserCreatedWithName": "Пользователь {0} был создан", + "UserDeletedWithName": "Пользователь {0} был удалён", + "UserDownloadingItemWithValues": "{0} загружает {1}", + "UserLockedOutWithName": "Пользователь {0} был заблокирован", + "UserOfflineFromDevice": "{0} - подкл. с {1} разъ-но", + "UserOnlineFromDevice": "{0} - подкл. с {1} уст-но", + "UserPasswordChangedWithName": "Пароль польз-ля {0} был изменён", + "UserPolicyUpdatedWithName": "Польз-ие политики {0} были обновлены", + "UserStartedPlayingItemWithValues": "{0} - воспр. «{1}» на {2}", + "UserStoppedPlayingItemWithValues": "{0} - воспр. «{1}» ост-но на {2}", + "ValueHasBeenAddedToLibrary": "{0} (добавлено в медиатеку)", + "ValueSpecialEpisodeName": "Спецэпизод - {0}", + "VersionNumber": "Версия {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/sk.json b/Emby.Server.Implementations/Localization/Core/sk.json index ddf690a559..ed0c689522 100644 --- a/Emby.Server.Implementations/Localization/Core/sk.json +++ b/Emby.Server.Implementations/Localization/Core/sk.json @@ -1,100 +1,100 @@ { - "Albums": "Albumy", - "AppDeviceValues": "Aplikácia: {0}, Zariadenie: {1}", - "Application": "Aplikácia", - "Artists": "Umelci", - "AuthenticationSucceededWithUserName": "{0} úspešne overený", - "Books": "Knihy", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanály", - "ChapterNameValue": "Kapitola {0}", - "Collections": "Zbierky", - "DeviceOfflineWithName": "{0} je odpojený", - "DeviceOnlineWithName": "{0} je pripojený", - "FailedLoginAttemptWithUserName": "Neúspešný pokus o prihlásenie z {0}", - "Favorites": "Obľúbené", - "Folders": "Priečinky", - "Games": "Hry", - "Genres": "Žánre", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Pokračujte v pozeraní", - "HeaderFavoriteAlbums": "Obľúbené albumy", - "HeaderFavoriteArtists": "Obľúbení umelci", - "HeaderFavoriteEpisodes": "Obľúbené epizódy", - "HeaderFavoriteShows": "Obľúbené seriály", - "HeaderFavoriteSongs": "Obľúbené pesničky", - "HeaderLiveTV": "Živá TV", - "HeaderNextUp": "Nasleduje", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Domáce videá", - "Inherit": "Zdediť", - "ItemAddedWithName": "{0} bol pridaný do knižnice", - "ItemRemovedWithName": "{0} bol odstránený z knižnice", - "LabelIpAddressValue": "IP adresa: {0}", - "LabelRunningTimeValue": "Dĺžka: {0}", - "Latest": "Najnovšie", - "MessageApplicationUpdated": "Jellyfin Server bol aktualizovaný", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Sekcia {0} konfigurácie servera bola aktualizovaná", - "MessageServerConfigurationUpdated": "Konfigurácia servera aktualizovaná", - "MixedContent": "Zmiešaný obsah", - "Movies": "Filmy", - "Music": "Hudba", - "MusicVideos": "Hudobné videá", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Sezóna {0}", - "NameSeasonUnknown": "Neznáma sezóna", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Je dostupná aktualizácia aplikácie", - "NotificationOptionApplicationUpdateInstalled": "Aktualizácia aplikácie nainštalovaná", - "NotificationOptionAudioPlayback": "Spustené prehrávanie audia", - "NotificationOptionAudioPlaybackStopped": "Zastavené prehrávanie audia", - "NotificationOptionCameraImageUploaded": "Nahraný obrázok z fotoaparátu", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Hra ukončená", - "NotificationOptionInstallationFailed": "Chyba inštalácie", - "NotificationOptionNewLibraryContent": "Pridaný nový obsah", - "NotificationOptionPluginError": "Chyba rozšírenia", - "NotificationOptionPluginInstalled": "Rozšírenie nainštalované", - "NotificationOptionPluginUninstalled": "Rozšírenie odinštalované", - "NotificationOptionPluginUpdateInstalled": "Aktualizácia rozšírenia nainštalovaná", - "NotificationOptionServerRestartRequired": "Vyžaduje sa reštart servera", - "NotificationOptionTaskFailed": "Naplánovaná úloha zlyhala", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Spustené prehrávanie videa", - "NotificationOptionVideoPlaybackStopped": "Zastavené prehrávanie videa", - "Photos": "Fotky", - "Playlists": "Zoznamy skladieb", - "Plugin": "Rozšírenie", - "PluginInstalledWithName": "{0} bol nainštalovaný", - "PluginUninstalledWithName": "{0} bol odinštalovaný", - "PluginUpdatedWithName": "{0} bol aktualizovaný", - "ProviderValue": "Poskytovateľ: {0}", - "ScheduledTaskFailedWithName": "{0} zlyhalo", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Series", - "Songs": "Skladby", - "StartupEmbyServerIsLoading": "Jellyfin Server sa spúšťa. Skúste to prosím o chvíľu znova.", - "SubtitleDownloadFailureForItem": "Sťahovanie titulkov pre {0} zlyhalo", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Titulky pre {0} stiahnuté", - "Sync": "Sync", - "System": "Systém", - "TvShows": "TV Shows", - "User": "Používateľ", - "UserCreatedWithName": "Používateľ {0} bol vytvorený", - "UserDeletedWithName": "Používateľ {0} bol vymazaný", - "UserDownloadingItemWithValues": "{0} sťahuje {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} sa odpojil od {1}", - "UserOnlineFromDevice": "{0} je online z {1}", - "UserPasswordChangedWithName": "Heslo používateľa {0} zmenené", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} spustil prehrávanie {1}", - "UserStoppedPlayingItemWithValues": "{0} zastavil prehrávanie {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Špeciál - {0}", - "VersionNumber": "Verzia {0}" + "Albums": "Albumy", + "AppDeviceValues": "Aplikácia: {0}, Zariadenie: {1}", + "Application": "Aplikácia", + "Artists": "Umelci", + "AuthenticationSucceededWithUserName": "{0} úspešne overený", + "Books": "Knihy", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanály", + "ChapterNameValue": "Kapitola {0}", + "Collections": "Zbierky", + "DeviceOfflineWithName": "{0} je odpojený", + "DeviceOnlineWithName": "{0} je pripojený", + "FailedLoginAttemptWithUserName": "Neúspešný pokus o prihlásenie z {0}", + "Favorites": "Obľúbené", + "Folders": "Priečinky", + "Games": "Hry", + "Genres": "Žánre", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Pokračujte v pozeraní", + "HeaderFavoriteAlbums": "Obľúbené albumy", + "HeaderFavoriteArtists": "Obľúbení umelci", + "HeaderFavoriteEpisodes": "Obľúbené epizódy", + "HeaderFavoriteShows": "Obľúbené seriály", + "HeaderFavoriteSongs": "Obľúbené pesničky", + "HeaderLiveTV": "Živá TV", + "HeaderNextUp": "Nasleduje", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Domáce videá", + "Inherit": "Zdediť", + "ItemAddedWithName": "{0} bol pridaný do knižnice", + "ItemRemovedWithName": "{0} bol odstránený z knižnice", + "LabelIpAddressValue": "IP adresa: {0}", + "LabelRunningTimeValue": "Dĺžka: {0}", + "Latest": "Najnovšie", + "MessageApplicationUpdated": "Jellyfin Server bol aktualizovaný", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Sekcia {0} konfigurácie servera bola aktualizovaná", + "MessageServerConfigurationUpdated": "Konfigurácia servera aktualizovaná", + "MixedContent": "Zmiešaný obsah", + "Movies": "Filmy", + "Music": "Hudba", + "MusicVideos": "Hudobné videá", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Sezóna {0}", + "NameSeasonUnknown": "Neznáma sezóna", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Je dostupná aktualizácia aplikácie", + "NotificationOptionApplicationUpdateInstalled": "Aktualizácia aplikácie nainštalovaná", + "NotificationOptionAudioPlayback": "Spustené prehrávanie audia", + "NotificationOptionAudioPlaybackStopped": "Zastavené prehrávanie audia", + "NotificationOptionCameraImageUploaded": "Nahraný obrázok z fotoaparátu", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Hra ukončená", + "NotificationOptionInstallationFailed": "Chyba inštalácie", + "NotificationOptionNewLibraryContent": "Pridaný nový obsah", + "NotificationOptionPluginError": "Chyba rozšírenia", + "NotificationOptionPluginInstalled": "Rozšírenie nainštalované", + "NotificationOptionPluginUninstalled": "Rozšírenie odinštalované", + "NotificationOptionPluginUpdateInstalled": "Aktualizácia rozšírenia nainštalovaná", + "NotificationOptionServerRestartRequired": "Vyžaduje sa reštart servera", + "NotificationOptionTaskFailed": "Naplánovaná úloha zlyhala", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Spustené prehrávanie videa", + "NotificationOptionVideoPlaybackStopped": "Zastavené prehrávanie videa", + "Photos": "Fotky", + "Playlists": "Zoznamy skladieb", + "Plugin": "Rozšírenie", + "PluginInstalledWithName": "{0} bol nainštalovaný", + "PluginUninstalledWithName": "{0} bol odinštalovaný", + "PluginUpdatedWithName": "{0} bol aktualizovaný", + "ProviderValue": "Poskytovateľ: {0}", + "ScheduledTaskFailedWithName": "{0} zlyhalo", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Series", + "Songs": "Skladby", + "StartupEmbyServerIsLoading": "Jellyfin Server sa spúšťa. Skúste to prosím o chvíľu znova.", + "SubtitleDownloadFailureForItem": "Sťahovanie titulkov pre {0} zlyhalo", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Titulky pre {0} stiahnuté", + "Sync": "Sync", + "System": "Systém", + "TvShows": "TV Shows", + "User": "Používateľ", + "UserCreatedWithName": "Používateľ {0} bol vytvorený", + "UserDeletedWithName": "Používateľ {0} bol vymazaný", + "UserDownloadingItemWithValues": "{0} sťahuje {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} sa odpojil od {1}", + "UserOnlineFromDevice": "{0} je online z {1}", + "UserPasswordChangedWithName": "Heslo používateľa {0} zmenené", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} spustil prehrávanie {1}", + "UserStoppedPlayingItemWithValues": "{0} zastavil prehrávanie {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Špeciál - {0}", + "VersionNumber": "Verzia {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/sl-SI.json b/Emby.Server.Implementations/Localization/Core/sl-SI.json index cd2076c640..8fe279836b 100644 --- a/Emby.Server.Implementations/Localization/Core/sl-SI.json +++ b/Emby.Server.Implementations/Localization/Core/sl-SI.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Serije", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Serije", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/sv.json b/Emby.Server.Implementations/Localization/Core/sv.json index f5f52f6580..517d648bbe 100644 --- a/Emby.Server.Implementations/Localization/Core/sv.json +++ b/Emby.Server.Implementations/Localization/Core/sv.json @@ -1,100 +1,100 @@ { - "Albums": "Album", - "AppDeviceValues": "App: {0}, Enhet: {1}", - "Application": "App", - "Artists": "Artister", - "AuthenticationSucceededWithUserName": "{0} har autentiserats", - "Books": "Böcker", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Kanaler", - "ChapterNameValue": "Kapitel {0}", - "Collections": "Samlingar", - "DeviceOfflineWithName": "{0} har tappat anslutningen", - "DeviceOnlineWithName": "{0} är ansluten", - "FailedLoginAttemptWithUserName": "Misslyckat inloggningsförsök från {0}", - "Favorites": "Favoriter", - "Folders": "Mappar", - "Games": "Spel", - "Genres": "Genrer", - "HeaderAlbumArtists": "Albumartister", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Fortsätt kolla på", - "HeaderFavoriteAlbums": "Favoritalbum", - "HeaderFavoriteArtists": "Favoritartister", - "HeaderFavoriteEpisodes": "Favoritavsnitt", - "HeaderFavoriteShows": "Favoritserier", - "HeaderFavoriteSongs": "Favoritlåtar", - "HeaderLiveTV": "Live-TV", - "HeaderNextUp": "Nästa på tur", - "HeaderRecordingGroups": "Inspelningsgrupper", - "HomeVideos": "Hemvideor", - "Inherit": "Ärv", - "ItemAddedWithName": "{0} lades till i biblioteket", - "ItemRemovedWithName": "{0} togs bort från biblioteket", - "LabelIpAddressValue": "IP-adress: {0}", - "LabelRunningTimeValue": "Speltid: {0}", - "Latest": "Senaste", - "MessageApplicationUpdated": "Jellyfin Server har uppdaterats", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Serverinställningarna {0} har uppdaterats", - "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats", - "MixedContent": "Blandat innehåll", - "Movies": "Filmer", - "Music": "Musik", - "MusicVideos": "Musikvideos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Säsong {0}", - "NameSeasonUnknown": "Okänd säsong", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillgänglig", - "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad", - "NotificationOptionAudioPlayback": "Ljuduppspelning har påbörjats", - "NotificationOptionAudioPlaybackStopped": "Ljuduppspelning stoppad", - "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp", - "NotificationOptionGamePlayback": "Spel har startats", - "NotificationOptionGamePlaybackStopped": "Spel stoppat", - "NotificationOptionInstallationFailed": "Fel vid installation", - "NotificationOptionNewLibraryContent": "Nytt innehåll har lagts till", - "NotificationOptionPluginError": "Fel uppstod med tillägget", - "NotificationOptionPluginInstalled": "Tillägg har installerats", - "NotificationOptionPluginUninstalled": "Tillägg har avinstallerats", - "NotificationOptionPluginUpdateInstalled": "Tillägg har uppdaterats", - "NotificationOptionServerRestartRequired": "Servern måste startas om", - "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats", - "NotificationOptionUserLockedOut": "Användare har låsts ut", - "NotificationOptionVideoPlayback": "Videouppspelning har påbörjats", - "NotificationOptionVideoPlaybackStopped": "Videouppspelning stoppad", - "Photos": "Bilder", - "Playlists": "Spellistor", - "Plugin": "Tillägg", - "PluginInstalledWithName": "{0} installerades", - "PluginUninstalledWithName": "{0} avinstallerades", - "PluginUpdatedWithName": "{0} uppdaterades", - "ProviderValue": "Källa: {0}", - "ScheduledTaskFailedWithName": "{0} misslyckades", - "ScheduledTaskStartedWithName": "{0} startad", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Serier", - "Songs": "Låtar", - "StartupEmbyServerIsLoading": "Jellyfin server arbetar. Pröva igen inom kort.", - "SubtitleDownloadFailureForItem": "Nerladdning av undertexter för {0} misslyckades", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Undertexter har laddats ner till {0}", - "Sync": "Synk", - "System": "System", - "TvShows": "TV-serier", - "User": "Användare", - "UserCreatedWithName": "Användaren {0} har skapats", - "UserDeletedWithName": "Användaren {0} har tagits bort", - "UserDownloadingItemWithValues": "{0} laddar ner {1}", - "UserLockedOutWithName": "Användare {0} har låsts ute", - "UserOfflineFromDevice": "{0} har avbrutit anslutningen från {1}", - "UserOnlineFromDevice": "{0} är uppkopplad från {1}", - "UserPasswordChangedWithName": "Lösenordet för {0} har ändrats", - "UserPolicyUpdatedWithName": "Användarpolicyn har uppdaterats för {0}", - "UserStartedPlayingItemWithValues": "{0} har börjat spela upp {1}", - "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Specialavsnitt - {0}", - "VersionNumber": "Version {0}" + "Albums": "Album", + "AppDeviceValues": "App: {0}, Enhet: {1}", + "Application": "App", + "Artists": "Artister", + "AuthenticationSucceededWithUserName": "{0} har autentiserats", + "Books": "Böcker", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Kanaler", + "ChapterNameValue": "Kapitel {0}", + "Collections": "Samlingar", + "DeviceOfflineWithName": "{0} har tappat anslutningen", + "DeviceOnlineWithName": "{0} är ansluten", + "FailedLoginAttemptWithUserName": "Misslyckat inloggningsförsök från {0}", + "Favorites": "Favoriter", + "Folders": "Mappar", + "Games": "Spel", + "Genres": "Genrer", + "HeaderAlbumArtists": "Albumartister", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Fortsätt kolla på", + "HeaderFavoriteAlbums": "Favoritalbum", + "HeaderFavoriteArtists": "Favoritartister", + "HeaderFavoriteEpisodes": "Favoritavsnitt", + "HeaderFavoriteShows": "Favoritserier", + "HeaderFavoriteSongs": "Favoritlåtar", + "HeaderLiveTV": "Live-TV", + "HeaderNextUp": "Nästa på tur", + "HeaderRecordingGroups": "Inspelningsgrupper", + "HomeVideos": "Hemvideor", + "Inherit": "Ärv", + "ItemAddedWithName": "{0} lades till i biblioteket", + "ItemRemovedWithName": "{0} togs bort från biblioteket", + "LabelIpAddressValue": "IP-adress: {0}", + "LabelRunningTimeValue": "Speltid: {0}", + "Latest": "Senaste", + "MessageApplicationUpdated": "Jellyfin Server har uppdaterats", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Serverinställningarna {0} har uppdaterats", + "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats", + "MixedContent": "Blandat innehåll", + "Movies": "Filmer", + "Music": "Musik", + "MusicVideos": "Musikvideos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Säsong {0}", + "NameSeasonUnknown": "Okänd säsong", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillgänglig", + "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad", + "NotificationOptionAudioPlayback": "Ljuduppspelning har påbörjats", + "NotificationOptionAudioPlaybackStopped": "Ljuduppspelning stoppad", + "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp", + "NotificationOptionGamePlayback": "Spel har startats", + "NotificationOptionGamePlaybackStopped": "Spel stoppat", + "NotificationOptionInstallationFailed": "Fel vid installation", + "NotificationOptionNewLibraryContent": "Nytt innehåll har lagts till", + "NotificationOptionPluginError": "Fel uppstod med tillägget", + "NotificationOptionPluginInstalled": "Tillägg har installerats", + "NotificationOptionPluginUninstalled": "Tillägg har avinstallerats", + "NotificationOptionPluginUpdateInstalled": "Tillägg har uppdaterats", + "NotificationOptionServerRestartRequired": "Servern måste startas om", + "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats", + "NotificationOptionUserLockedOut": "Användare har låsts ut", + "NotificationOptionVideoPlayback": "Videouppspelning har påbörjats", + "NotificationOptionVideoPlaybackStopped": "Videouppspelning stoppad", + "Photos": "Bilder", + "Playlists": "Spellistor", + "Plugin": "Tillägg", + "PluginInstalledWithName": "{0} installerades", + "PluginUninstalledWithName": "{0} avinstallerades", + "PluginUpdatedWithName": "{0} uppdaterades", + "ProviderValue": "Källa: {0}", + "ScheduledTaskFailedWithName": "{0} misslyckades", + "ScheduledTaskStartedWithName": "{0} startad", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Serier", + "Songs": "Låtar", + "StartupEmbyServerIsLoading": "Jellyfin server arbetar. Pröva igen inom kort.", + "SubtitleDownloadFailureForItem": "Nerladdning av undertexter för {0} misslyckades", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Undertexter har laddats ner till {0}", + "Sync": "Synk", + "System": "System", + "TvShows": "TV-serier", + "User": "Användare", + "UserCreatedWithName": "Användaren {0} har skapats", + "UserDeletedWithName": "Användaren {0} har tagits bort", + "UserDownloadingItemWithValues": "{0} laddar ner {1}", + "UserLockedOutWithName": "Användare {0} har låsts ute", + "UserOfflineFromDevice": "{0} har avbrutit anslutningen från {1}", + "UserOnlineFromDevice": "{0} är uppkopplad från {1}", + "UserPasswordChangedWithName": "Lösenordet för {0} har ändrats", + "UserPolicyUpdatedWithName": "Användarpolicyn har uppdaterats för {0}", + "UserStartedPlayingItemWithValues": "{0} har börjat spela upp {1}", + "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Specialavsnitt - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/tr.json b/Emby.Server.Implementations/Localization/Core/tr.json index b04d61c650..9e86e2125b 100644 --- a/Emby.Server.Implementations/Localization/Core/tr.json +++ b/Emby.Server.Implementations/Localization/Core/tr.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favori Showlar", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "Version {0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favori Showlar", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "Version {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/zh-CN.json b/Emby.Server.Implementations/Localization/Core/zh-CN.json index fcf260e28f..6d877ec171 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-CN.json +++ b/Emby.Server.Implementations/Localization/Core/zh-CN.json @@ -1,100 +1,100 @@ { - "Albums": "专辑", - "AppDeviceValues": "应用: {0}, 设备: {1}", - "Application": "应用程序", - "Artists": "艺术家", - "AuthenticationSucceededWithUserName": "{0} 成功验证", - "Books": "书籍", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "频道", - "ChapterNameValue": "章节 {0}", - "Collections": "合集", - "DeviceOfflineWithName": "{0} 已断开", - "DeviceOnlineWithName": "{0} 已连接", - "FailedLoginAttemptWithUserName": "来自 {0} 的失败登入", - "Favorites": "最爱", - "Folders": "文件夹", - "Games": "游戏", - "Genres": "风格", - "HeaderAlbumArtists": "专辑作家", - "HeaderCameraUploads": "相机上传", - "HeaderContinueWatching": "继续观看", - "HeaderFavoriteAlbums": "最爱的专辑", - "HeaderFavoriteArtists": "最爱作家", - "HeaderFavoriteEpisodes": "最爱的集", - "HeaderFavoriteShows": "最爱的节目", - "HeaderFavoriteSongs": "最爱的歌曲", - "HeaderLiveTV": "电视直播", - "HeaderNextUp": "接下来", - "HeaderRecordingGroups": "录制组", - "HomeVideos": "家庭视频", - "Inherit": "继承", - "ItemAddedWithName": "{0} 已添加到媒体库", - "ItemRemovedWithName": "{0} 已从媒体库中移除", - "LabelIpAddressValue": "Ip 地址:{0}", - "LabelRunningTimeValue": "运行时间:{0}", - "Latest": "最新", - "MessageApplicationUpdated": "Jellyfin 服务器已更新", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "服务器配置 {0} 部分已更新", - "MessageServerConfigurationUpdated": "服务器配置已更新", - "MixedContent": "混合内容", - "Movies": "电影", - "Music": "音乐", - "MusicVideos": "音乐视频", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "季 {0}", - "NameSeasonUnknown": "未知季", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "有可用的应用程序更新", - "NotificationOptionApplicationUpdateInstalled": "应用程序更新已安装", - "NotificationOptionAudioPlayback": "音频开始播放", - "NotificationOptionAudioPlaybackStopped": "音频播放已停止", - "NotificationOptionCameraImageUploaded": "相机图片已上传", - "NotificationOptionGamePlayback": "游戏开始", - "NotificationOptionGamePlaybackStopped": "游戏停止", - "NotificationOptionInstallationFailed": "安装失败", - "NotificationOptionNewLibraryContent": "已添加新内容", - "NotificationOptionPluginError": "插件失败", - "NotificationOptionPluginInstalled": "插件已安装", - "NotificationOptionPluginUninstalled": "插件已卸载", - "NotificationOptionPluginUpdateInstalled": "插件更新已安装", - "NotificationOptionServerRestartRequired": "服务器需要重启", - "NotificationOptionTaskFailed": "计划任务失败", - "NotificationOptionUserLockedOut": "用户已锁定", - "NotificationOptionVideoPlayback": "视频开始播放", - "NotificationOptionVideoPlaybackStopped": "视频播放已停止", - "Photos": "照片", - "Playlists": "播放列表", - "Plugin": "插件", - "PluginInstalledWithName": "{0} 已安装", - "PluginUninstalledWithName": "{0} 已卸载", - "PluginUpdatedWithName": "{0} 已更新", - "ProviderValue": "提供商:{0}", - "ScheduledTaskFailedWithName": "{0} 已失败", - "ScheduledTaskStartedWithName": "{0} 已开始", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "节目", - "Songs": "歌曲", - "StartupEmbyServerIsLoading": "Jellyfin 服务器加载中。请稍后再试。", - "SubtitleDownloadFailureForItem": "为 {0} 下载字幕失败", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "已为 {0} 下载了字幕", - "Sync": "同步", - "System": "系统", - "TvShows": "电视节目", - "User": "用户", - "UserCreatedWithName": "用户 {0} 已创建", - "UserDeletedWithName": "用户 {0} 已删除", - "UserDownloadingItemWithValues": "{0} 正在下载 {1}", - "UserLockedOutWithName": "用户 {0} 已被锁定", - "UserOfflineFromDevice": "{0} 已从 {1} 断开", - "UserOnlineFromDevice": "{0} 在线,来自 {1}", - "UserPasswordChangedWithName": "已为用户 {0} 更改密码", - "UserPolicyUpdatedWithName": "用户协议已经被更新为 {0}", - "UserStartedPlayingItemWithValues": "{0} 已开始播放 {1}", - "UserStoppedPlayingItemWithValues": "{0} 已停止播放 {1}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "特典 - {0}", - "VersionNumber": "版本 {0}" + "Albums": "专辑", + "AppDeviceValues": "应用: {0}, 设备: {1}", + "Application": "应用程序", + "Artists": "艺术家", + "AuthenticationSucceededWithUserName": "{0} 成功验证", + "Books": "书籍", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "频道", + "ChapterNameValue": "章节 {0}", + "Collections": "合集", + "DeviceOfflineWithName": "{0} 已断开", + "DeviceOnlineWithName": "{0} 已连接", + "FailedLoginAttemptWithUserName": "来自 {0} 的失败登入", + "Favorites": "最爱", + "Folders": "文件夹", + "Games": "游戏", + "Genres": "风格", + "HeaderAlbumArtists": "专辑作家", + "HeaderCameraUploads": "相机上传", + "HeaderContinueWatching": "继续观看", + "HeaderFavoriteAlbums": "最爱的专辑", + "HeaderFavoriteArtists": "最爱作家", + "HeaderFavoriteEpisodes": "最爱的集", + "HeaderFavoriteShows": "最爱的节目", + "HeaderFavoriteSongs": "最爱的歌曲", + "HeaderLiveTV": "电视直播", + "HeaderNextUp": "接下来", + "HeaderRecordingGroups": "录制组", + "HomeVideos": "家庭视频", + "Inherit": "继承", + "ItemAddedWithName": "{0} 已添加到媒体库", + "ItemRemovedWithName": "{0} 已从媒体库中移除", + "LabelIpAddressValue": "Ip 地址:{0}", + "LabelRunningTimeValue": "运行时间:{0}", + "Latest": "最新", + "MessageApplicationUpdated": "Jellyfin 服务器已更新", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "服务器配置 {0} 部分已更新", + "MessageServerConfigurationUpdated": "服务器配置已更新", + "MixedContent": "混合内容", + "Movies": "电影", + "Music": "音乐", + "MusicVideos": "音乐视频", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "季 {0}", + "NameSeasonUnknown": "未知季", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "有可用的应用程序更新", + "NotificationOptionApplicationUpdateInstalled": "应用程序更新已安装", + "NotificationOptionAudioPlayback": "音频开始播放", + "NotificationOptionAudioPlaybackStopped": "音频播放已停止", + "NotificationOptionCameraImageUploaded": "相机图片已上传", + "NotificationOptionGamePlayback": "游戏开始", + "NotificationOptionGamePlaybackStopped": "游戏停止", + "NotificationOptionInstallationFailed": "安装失败", + "NotificationOptionNewLibraryContent": "已添加新内容", + "NotificationOptionPluginError": "插件失败", + "NotificationOptionPluginInstalled": "插件已安装", + "NotificationOptionPluginUninstalled": "插件已卸载", + "NotificationOptionPluginUpdateInstalled": "插件更新已安装", + "NotificationOptionServerRestartRequired": "服务器需要重启", + "NotificationOptionTaskFailed": "计划任务失败", + "NotificationOptionUserLockedOut": "用户已锁定", + "NotificationOptionVideoPlayback": "视频开始播放", + "NotificationOptionVideoPlaybackStopped": "视频播放已停止", + "Photos": "照片", + "Playlists": "播放列表", + "Plugin": "插件", + "PluginInstalledWithName": "{0} 已安装", + "PluginUninstalledWithName": "{0} 已卸载", + "PluginUpdatedWithName": "{0} 已更新", + "ProviderValue": "提供商:{0}", + "ScheduledTaskFailedWithName": "{0} 已失败", + "ScheduledTaskStartedWithName": "{0} 已开始", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "节目", + "Songs": "歌曲", + "StartupEmbyServerIsLoading": "Jellyfin 服务器加载中。请稍后再试。", + "SubtitleDownloadFailureForItem": "为 {0} 下载字幕失败", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "已为 {0} 下载了字幕", + "Sync": "同步", + "System": "系统", + "TvShows": "电视节目", + "User": "用户", + "UserCreatedWithName": "用户 {0} 已创建", + "UserDeletedWithName": "用户 {0} 已删除", + "UserDownloadingItemWithValues": "{0} 正在下载 {1}", + "UserLockedOutWithName": "用户 {0} 已被锁定", + "UserOfflineFromDevice": "{0} 已从 {1} 断开", + "UserOnlineFromDevice": "{0} 在线,来自 {1}", + "UserPasswordChangedWithName": "已为用户 {0} 更改密码", + "UserPolicyUpdatedWithName": "用户协议已经被更新为 {0}", + "UserStartedPlayingItemWithValues": "{0} 已开始播放 {1}", + "UserStoppedPlayingItemWithValues": "{0} 已停止播放 {1}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "特典 - {0}", + "VersionNumber": "版本 {0}" } diff --git a/Emby.Server.Implementations/Localization/Core/zh-HK.json b/Emby.Server.Implementations/Localization/Core/zh-HK.json index dc6332b03d..cad5700fde 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-HK.json +++ b/Emby.Server.Implementations/Localization/Core/zh-HK.json @@ -1,100 +1,100 @@ { - "Albums": "Albums", - "AppDeviceValues": "App: {0}, Device: {1}", - "Application": "Application", - "Artists": "Artists", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "Books": "Books", - "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", - "Channels": "Channels", - "ChapterNameValue": "Chapter {0}", - "Collections": "Collections", - "DeviceOfflineWithName": "{0} has disconnected", - "DeviceOnlineWithName": "{0} is connected", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "Favorites": "Favorites", - "Folders": "Folders", - "Games": "Games", - "Genres": "Genres", - "HeaderAlbumArtists": "Album Artists", - "HeaderCameraUploads": "Camera Uploads", - "HeaderContinueWatching": "Continue Watching", - "HeaderFavoriteAlbums": "Favorite Albums", - "HeaderFavoriteArtists": "Favorite Artists", - "HeaderFavoriteEpisodes": "Favorite Episodes", - "HeaderFavoriteShows": "Favorite Shows", - "HeaderFavoriteSongs": "Favorite Songs", - "HeaderLiveTV": "Live TV", - "HeaderNextUp": "Next Up", - "HeaderRecordingGroups": "Recording Groups", - "HomeVideos": "Home videos", - "Inherit": "Inherit", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "LabelRunningTimeValue": "Running time: {0}", - "Latest": "Latest", - "MessageApplicationUpdated": "Jellyfin Server has been updated", - "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MixedContent": "Mixed content", - "Movies": "Movies", - "Music": "Music", - "MusicVideos": "Music videos", - "NameInstallFailed": "{0} installation failed", - "NameSeasonNumber": "Season {0}", - "NameSeasonUnknown": "Season Unknown", - "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionServerRestartRequired": "Server restart required", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "Photos": "Photos", - "Playlists": "Playlists", - "Plugin": "Plugin", - "PluginInstalledWithName": "{0} was installed", - "PluginUninstalledWithName": "{0} was uninstalled", - "PluginUpdatedWithName": "{0} was updated", - "ProviderValue": "Provider: {0}", - "ScheduledTaskFailedWithName": "{0} failed", - "ScheduledTaskStartedWithName": "{0} started", - "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", - "Shows": "Shows", - "Songs": "Songs", - "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "Sync": "Sync", - "System": "System", - "TvShows": "TV Shows", - "User": "User", - "UserCreatedWithName": "User {0} has been created", - "UserDeletedWithName": "User {0} has been deleted", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserOnlineFromDevice": "{0} is online from {1}", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserPolicyUpdatedWithName": "User policy has been updated for {0}", - "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", - "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", - "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", - "ValueSpecialEpisodeName": "Special - {0}", - "VersionNumber": "版本{0}" + "Albums": "Albums", + "AppDeviceValues": "App: {0}, Device: {1}", + "Application": "Application", + "Artists": "Artists", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "Books": "Books", + "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}", + "Channels": "Channels", + "ChapterNameValue": "Chapter {0}", + "Collections": "Collections", + "DeviceOfflineWithName": "{0} has disconnected", + "DeviceOnlineWithName": "{0} is connected", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "Favorites": "Favorites", + "Folders": "Folders", + "Games": "Games", + "Genres": "Genres", + "HeaderAlbumArtists": "Album Artists", + "HeaderCameraUploads": "Camera Uploads", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderLiveTV": "Live TV", + "HeaderNextUp": "Next Up", + "HeaderRecordingGroups": "Recording Groups", + "HomeVideos": "Home videos", + "Inherit": "Inherit", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "LabelRunningTimeValue": "Running time: {0}", + "Latest": "Latest", + "MessageApplicationUpdated": "Jellyfin Server has been updated", + "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MixedContent": "Mixed content", + "Movies": "Movies", + "Music": "Music", + "MusicVideos": "Music videos", + "NameInstallFailed": "{0} installation failed", + "NameSeasonNumber": "Season {0}", + "NameSeasonUnknown": "Season Unknown", + "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionServerRestartRequired": "Server restart required", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "Photos": "Photos", + "Playlists": "Playlists", + "Plugin": "Plugin", + "PluginInstalledWithName": "{0} was installed", + "PluginUninstalledWithName": "{0} was uninstalled", + "PluginUpdatedWithName": "{0} was updated", + "ProviderValue": "Provider: {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "ScheduledTaskStartedWithName": "{0} started", + "ServerNameNeedsToBeRestarted": "{0} needs to be restarted", + "Shows": "Shows", + "Songs": "Songs", + "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "Sync": "Sync", + "System": "System", + "TvShows": "TV Shows", + "User": "User", + "UserCreatedWithName": "User {0} has been created", + "UserDeletedWithName": "User {0} has been deleted", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserLockedOutWithName": "User {0} has been locked out", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "UserOnlineFromDevice": "{0} is online from {1}", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserPolicyUpdatedWithName": "User policy has been updated for {0}", + "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}", + "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}", + "ValueHasBeenAddedToLibrary": "{0} has been added to your media library", + "ValueSpecialEpisodeName": "Special - {0}", + "VersionNumber": "版本{0}" } diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs index a2c47cd791..5d3c39af47 100644 --- a/Emby.Server.Implementations/Localization/LocalizationManager.cs +++ b/Emby.Server.Implementations/Localization/LocalizationManager.cs @@ -1,17 +1,17 @@ -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.Globalization; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Reflection; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Localization { @@ -138,7 +138,7 @@ namespace Emby.Server.Implementations.Localization new ParentalRating("FSK-18", 9) }); - LoadRatings("ru", new [] { + LoadRatings("ru", new[] { new ParentalRating("RU-0+", 1), new ParentalRating("RU-6+", 3), @@ -298,9 +298,7 @@ namespace Emby.Server.Implementations.Localization /// The country code. private Dictionary GetRatings(string countryCode) { - Dictionary value; - - _allParentalRatings.TryGetValue(countryCode, out value); + _allParentalRatings.TryGetValue(countryCode, out var value); return value; } @@ -320,9 +318,7 @@ namespace Emby.Server.Implementations.Localization if (parts.Length == 2) { - int value; - - if (int.TryParse(parts[1], NumberStyles.Integer, UsCulture, out value)) + if (int.TryParse(parts[1], NumberStyles.Integer, UsCulture, out var value)) { return new ParentalRating { Name = parts[0], Value = value }; } @@ -364,9 +360,7 @@ namespace Emby.Server.Implementations.Localization var ratingsDictionary = GetParentalRatingsDictionary(); - ParentalRating value; - - if (ratingsDictionary.TryGetValue(rating, out value)) + if (ratingsDictionary.TryGetValue(rating, out ParentalRating value)) { return value.Value; } @@ -427,9 +421,7 @@ namespace Emby.Server.Implementations.Localization var dictionary = GetLocalizationDictionary(culture); - string value; - - if (dictionary.TryGetValue(phrase, out value)) + if (dictionary.TryGetValue(phrase, out var value)) { return value; } diff --git a/Emby.Server.Implementations/Localization/Ratings/br.txt b/Emby.Server.Implementations/Localization/Ratings/br.txt index 62f00fb87e..e5edaf62cf 100644 --- a/Emby.Server.Implementations/Localization/Ratings/br.txt +++ b/Emby.Server.Implementations/Localization/Ratings/br.txt @@ -3,4 +3,4 @@ BR-10,5 BR-12,7 BR-14,8 BR-16,8 -BR-18,9 \ No newline at end of file +BR-18,9 diff --git a/Emby.Server.Implementations/Localization/Ratings/ca.txt b/Emby.Server.Implementations/Localization/Ratings/ca.txt index 5a110648cd..5aef0580f8 100644 --- a/Emby.Server.Implementations/Localization/Ratings/ca.txt +++ b/Emby.Server.Implementations/Localization/Ratings/ca.txt @@ -1,6 +1,6 @@ -CA-G,1 +CA-G,1 CA-PG,5 CA-14A,7 CA-A,8 CA-18A,9 -CA-R,10 \ No newline at end of file +CA-R,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/co.txt b/Emby.Server.Implementations/Localization/Ratings/co.txt index a694a0be66..9684fa0524 100644 --- a/Emby.Server.Implementations/Localization/Ratings/co.txt +++ b/Emby.Server.Implementations/Localization/Ratings/co.txt @@ -5,4 +5,4 @@ CO-15,8 CO-18,10 CO-X,100 CO-BANNED,15 -CO-E,15 \ No newline at end of file +CO-E,15 diff --git a/Emby.Server.Implementations/Localization/Ratings/dk.txt b/Emby.Server.Implementations/Localization/Ratings/dk.txt index b9a085e012..5364ae1f27 100644 --- a/Emby.Server.Implementations/Localization/Ratings/dk.txt +++ b/Emby.Server.Implementations/Localization/Ratings/dk.txt @@ -1,4 +1,4 @@ DA-A,1 DA-7,5 DA-11,6 -DA-15,8 \ No newline at end of file +DA-15,8 diff --git a/Emby.Server.Implementations/Localization/Ratings/es.txt b/Emby.Server.Implementations/Localization/Ratings/es.txt index 32a1e6438d..887d91ba63 100644 --- a/Emby.Server.Implementations/Localization/Ratings/es.txt +++ b/Emby.Server.Implementations/Localization/Ratings/es.txt @@ -3,4 +3,4 @@ ES-APTA,1 ES-7,3 ES-12,6 ES-16,8 -ES-18,11 \ No newline at end of file +ES-18,11 diff --git a/Emby.Server.Implementations/Localization/Ratings/fr.txt b/Emby.Server.Implementations/Localization/Ratings/fr.txt index 2bb205b0da..f586a3fa91 100644 --- a/Emby.Server.Implementations/Localization/Ratings/fr.txt +++ b/Emby.Server.Implementations/Localization/Ratings/fr.txt @@ -2,4 +2,4 @@ FR-U,1 FR-10,5 FR-12,7 FR-16,9 -FR-18,10 \ No newline at end of file +FR-18,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/ie.txt b/Emby.Server.Implementations/Localization/Ratings/ie.txt index 283f077672..e42be5cd49 100644 --- a/Emby.Server.Implementations/Localization/Ratings/ie.txt +++ b/Emby.Server.Implementations/Localization/Ratings/ie.txt @@ -3,4 +3,4 @@ IE-PG,5 IE-12A,7 IE-15A,8 IE-16,9 -IE-18,10 \ No newline at end of file +IE-18,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/jp.txt b/Emby.Server.Implementations/Localization/Ratings/jp.txt index 2e1da30d81..a8fc2d1431 100644 --- a/Emby.Server.Implementations/Localization/Ratings/jp.txt +++ b/Emby.Server.Implementations/Localization/Ratings/jp.txt @@ -1,4 +1,4 @@ JP-G,1 JP-PG12,7 JP-15+,8 -JP-18+,10 \ No newline at end of file +JP-18+,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/kz.txt b/Emby.Server.Implementations/Localization/Ratings/kz.txt index b31e12d969..4441c56503 100644 --- a/Emby.Server.Implementations/Localization/Ratings/kz.txt +++ b/Emby.Server.Implementations/Localization/Ratings/kz.txt @@ -3,4 +3,4 @@ KZ-БА,6 KZ-Б14,7 KZ-Е16,8 KZ-Е18,10 -KZ-НА,15 \ No newline at end of file +KZ-НА,15 diff --git a/Emby.Server.Implementations/Localization/Ratings/mx.txt b/Emby.Server.Implementations/Localization/Ratings/mx.txt index 93b609c3d9..785a8ba227 100644 --- a/Emby.Server.Implementations/Localization/Ratings/mx.txt +++ b/Emby.Server.Implementations/Localization/Ratings/mx.txt @@ -3,4 +3,4 @@ MX-A,5 MX-B,7 MX-B-15,8 MX-C,9 -MX-D,10 \ No newline at end of file +MX-D,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/nl.txt b/Emby.Server.Implementations/Localization/Ratings/nl.txt index f69cc2bcc9..8c005092e4 100644 --- a/Emby.Server.Implementations/Localization/Ratings/nl.txt +++ b/Emby.Server.Implementations/Localization/Ratings/nl.txt @@ -3,4 +3,4 @@ NL-MG6,2 NL-6,3 NL-9,5 NL-12,6 -NL-16,8 \ No newline at end of file +NL-16,8 diff --git a/Emby.Server.Implementations/Localization/Ratings/nz.txt b/Emby.Server.Implementations/Localization/Ratings/nz.txt index 46e4067ba3..bba99b764a 100644 --- a/Emby.Server.Implementations/Localization/Ratings/nz.txt +++ b/Emby.Server.Implementations/Localization/Ratings/nz.txt @@ -8,4 +8,4 @@ NZ-RP16,9 NZ-R16,9 NZ-R18,10 NZ-R,10 -NZ-MA,10 \ No newline at end of file +NZ-MA,10 diff --git a/Emby.Server.Implementations/Localization/Ratings/ro.txt b/Emby.Server.Implementations/Localization/Ratings/ro.txt index 3fdaed9ccc..4089b282f0 100644 --- a/Emby.Server.Implementations/Localization/Ratings/ro.txt +++ b/Emby.Server.Implementations/Localization/Ratings/ro.txt @@ -1 +1 @@ -RO-AG,1 \ No newline at end of file +RO-AG,1 diff --git a/Emby.Server.Implementations/Localization/Ratings/uk.txt b/Emby.Server.Implementations/Localization/Ratings/uk.txt index 20440921f6..6c8005b3f3 100644 --- a/Emby.Server.Implementations/Localization/Ratings/uk.txt +++ b/Emby.Server.Implementations/Localization/Ratings/uk.txt @@ -4,4 +4,4 @@ UK-12,7 UK-12A,7 UK-15,9 UK-18,10 -UK-R18,15 \ No newline at end of file +UK-R18,15 diff --git a/Emby.Server.Implementations/Localization/Ratings/us.txt b/Emby.Server.Implementations/Localization/Ratings/us.txt index eebd828c71..34c897fe3f 100644 --- a/Emby.Server.Implementations/Localization/Ratings/us.txt +++ b/Emby.Server.Implementations/Localization/Ratings/us.txt @@ -20,4 +20,4 @@ RP,15 UR,15 NR,15 X,15 -XXX,100 \ No newline at end of file +XXX,100 diff --git a/Emby.Server.Implementations/Localization/TextLocalizer.cs b/Emby.Server.Implementations/Localization/TextLocalizer.cs index 09445d4281..96591e5e67 100644 --- a/Emby.Server.Implementations/Localization/TextLocalizer.cs +++ b/Emby.Server.Implementations/Localization/TextLocalizer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Globalization; using System.Linq; using System.Text; diff --git a/Emby.Server.Implementations/Localization/countries.json b/Emby.Server.Implementations/Localization/countries.json index 2639aa2749..581e9f8357 100644 --- a/Emby.Server.Implementations/Localization/countries.json +++ b/Emby.Server.Implementations/Localization/countries.json @@ -1,830 +1,830 @@ [ - { - "DisplayName": "Afghanistan", - "Name": "AF", - "ThreeLetterISORegionName": "AFG", - "TwoLetterISORegionName": "AF" - }, - { - "DisplayName": "Albania", - "Name": "AL", - "ThreeLetterISORegionName": "ALB", - "TwoLetterISORegionName": "AL" - }, - { - "DisplayName": "Algeria", - "Name": "DZ", - "ThreeLetterISORegionName": "DZA", - "TwoLetterISORegionName": "DZ" - }, - { - "DisplayName": "Argentina", - "Name": "AR", - "ThreeLetterISORegionName": "ARG", - "TwoLetterISORegionName": "AR" - }, - { - "DisplayName": "Armenia", - "Name": "AM", - "ThreeLetterISORegionName": "ARM", - "TwoLetterISORegionName": "AM" - }, - { - "DisplayName": "Australia", - "Name": "AU", - "ThreeLetterISORegionName": "AUS", - "TwoLetterISORegionName": "AU" - }, - { - "DisplayName": "Austria", - "Name": "AT", - "ThreeLetterISORegionName": "AUT", - "TwoLetterISORegionName": "AT" - }, - { - "DisplayName": "Azerbaijan", - "Name": "AZ", - "ThreeLetterISORegionName": "AZE", - "TwoLetterISORegionName": "AZ" - }, - { - "DisplayName": "Bahrain", - "Name": "BH", - "ThreeLetterISORegionName": "BHR", - "TwoLetterISORegionName": "BH" - }, - { - "DisplayName": "Bangladesh", - "Name": "BD", - "ThreeLetterISORegionName": "BGD", - "TwoLetterISORegionName": "BD" - }, - { - "DisplayName": "Belarus", - "Name": "BY", - "ThreeLetterISORegionName": "BLR", - "TwoLetterISORegionName": "BY" - }, - { - "DisplayName": "Belgium", - "Name": "BE", - "ThreeLetterISORegionName": "BEL", - "TwoLetterISORegionName": "BE" - }, - { - "DisplayName": "Belize", - "Name": "BZ", - "ThreeLetterISORegionName": "BLZ", - "TwoLetterISORegionName": "BZ" - }, - { - "DisplayName": "Bolivarian Republic of Venezuela", - "Name": "VE", - "ThreeLetterISORegionName": "VEN", - "TwoLetterISORegionName": "VE" - }, - { - "DisplayName": "Bolivia", - "Name": "BO", - "ThreeLetterISORegionName": "BOL", - "TwoLetterISORegionName": "BO" - }, - { - "DisplayName": "Bosnia and Herzegovina", - "Name": "BA", - "ThreeLetterISORegionName": "BIH", - "TwoLetterISORegionName": "BA" - }, - { - "DisplayName": "Botswana", - "Name": "BW", - "ThreeLetterISORegionName": "BWA", - "TwoLetterISORegionName": "BW" - }, - { - "DisplayName": "Brazil", - "Name": "BR", - "ThreeLetterISORegionName": "BRA", - "TwoLetterISORegionName": "BR" - }, - { - "DisplayName": "Brunei Darussalam", - "Name": "BN", - "ThreeLetterISORegionName": "BRN", - "TwoLetterISORegionName": "BN" - }, - { - "DisplayName": "Bulgaria", - "Name": "BG", - "ThreeLetterISORegionName": "BGR", - "TwoLetterISORegionName": "BG" - }, - { - "DisplayName": "Cambodia", - "Name": "KH", - "ThreeLetterISORegionName": "KHM", - "TwoLetterISORegionName": "KH" - }, - { - "DisplayName": "Cameroon", - "Name": "CM", - "ThreeLetterISORegionName": "CMR", - "TwoLetterISORegionName": "CM" - }, - { - "DisplayName": "Canada", - "Name": "CA", - "ThreeLetterISORegionName": "CAN", - "TwoLetterISORegionName": "CA" - }, - { - "DisplayName": "Caribbean", - "Name": "029", - "ThreeLetterISORegionName": "029", - "TwoLetterISORegionName": "029" - }, - { - "DisplayName": "Chile", - "Name": "CL", - "ThreeLetterISORegionName": "CHL", - "TwoLetterISORegionName": "CL" - }, - { - "DisplayName": "Colombia", - "Name": "CO", - "ThreeLetterISORegionName": "COL", - "TwoLetterISORegionName": "CO" - }, - { - "DisplayName": "Congo [DRC]", - "Name": "CD", - "ThreeLetterISORegionName": "COD", - "TwoLetterISORegionName": "CD" - }, - { - "DisplayName": "Costa Rica", - "Name": "CR", - "ThreeLetterISORegionName": "CRI", - "TwoLetterISORegionName": "CR" - }, - { - "DisplayName": "Croatia", - "Name": "HR", - "ThreeLetterISORegionName": "HRV", - "TwoLetterISORegionName": "HR" - }, - { - "DisplayName": "Czech Republic", - "Name": "CZ", - "ThreeLetterISORegionName": "CZE", - "TwoLetterISORegionName": "CZ" - }, - { - "DisplayName": "Denmark", - "Name": "DK", - "ThreeLetterISORegionName": "DNK", - "TwoLetterISORegionName": "DK" - }, - { - "DisplayName": "Dominican Republic", - "Name": "DO", - "ThreeLetterISORegionName": "DOM", - "TwoLetterISORegionName": "DO" - }, - { - "DisplayName": "Ecuador", - "Name": "EC", - "ThreeLetterISORegionName": "ECU", - "TwoLetterISORegionName": "EC" - }, - { - "DisplayName": "Egypt", - "Name": "EG", - "ThreeLetterISORegionName": "EGY", - "TwoLetterISORegionName": "EG" - }, - { - "DisplayName": "El Salvador", - "Name": "SV", - "ThreeLetterISORegionName": "SLV", - "TwoLetterISORegionName": "SV" - }, - { - "DisplayName": "Eritrea", - "Name": "ER", - "ThreeLetterISORegionName": "ERI", - "TwoLetterISORegionName": "ER" - }, - { - "DisplayName": "Estonia", - "Name": "EE", - "ThreeLetterISORegionName": "EST", - "TwoLetterISORegionName": "EE" - }, - { - "DisplayName": "Ethiopia", - "Name": "ET", - "ThreeLetterISORegionName": "ETH", - "TwoLetterISORegionName": "ET" - }, - { - "DisplayName": "Faroe Islands", - "Name": "FO", - "ThreeLetterISORegionName": "FRO", - "TwoLetterISORegionName": "FO" - }, - { - "DisplayName": "Finland", - "Name": "FI", - "ThreeLetterISORegionName": "FIN", - "TwoLetterISORegionName": "FI" - }, - { - "DisplayName": "France", - "Name": "FR", - "ThreeLetterISORegionName": "FRA", - "TwoLetterISORegionName": "FR" - }, - { - "DisplayName": "Georgia", - "Name": "GE", - "ThreeLetterISORegionName": "GEO", - "TwoLetterISORegionName": "GE" - }, - { - "DisplayName": "Germany", - "Name": "DE", - "ThreeLetterISORegionName": "DEU", - "TwoLetterISORegionName": "DE" - }, - { - "DisplayName": "Greece", - "Name": "GR", - "ThreeLetterISORegionName": "GRC", - "TwoLetterISORegionName": "GR" - }, - { - "DisplayName": "Greenland", - "Name": "GL", - "ThreeLetterISORegionName": "GRL", - "TwoLetterISORegionName": "GL" - }, - { - "DisplayName": "Guatemala", - "Name": "GT", - "ThreeLetterISORegionName": "GTM", - "TwoLetterISORegionName": "GT" - }, - { - "DisplayName": "Haiti", - "Name": "HT", - "ThreeLetterISORegionName": "HTI", - "TwoLetterISORegionName": "HT" - }, - { - "DisplayName": "Honduras", - "Name": "HN", - "ThreeLetterISORegionName": "HND", - "TwoLetterISORegionName": "HN" - }, - { - "DisplayName": "Hong Kong S.A.R.", - "Name": "HK", - "ThreeLetterISORegionName": "HKG", - "TwoLetterISORegionName": "HK" - }, - { - "DisplayName": "Hungary", - "Name": "HU", - "ThreeLetterISORegionName": "HUN", - "TwoLetterISORegionName": "HU" - }, - { - "DisplayName": "Iceland", - "Name": "IS", - "ThreeLetterISORegionName": "ISL", - "TwoLetterISORegionName": "IS" - }, - { - "DisplayName": "India", - "Name": "IN", - "ThreeLetterISORegionName": "IND", - "TwoLetterISORegionName": "IN" - }, - { - "DisplayName": "Indonesia", - "Name": "ID", - "ThreeLetterISORegionName": "IDN", - "TwoLetterISORegionName": "ID" - }, - { - "DisplayName": "Iran", - "Name": "IR", - "ThreeLetterISORegionName": "IRN", - "TwoLetterISORegionName": "IR" - }, - { - "DisplayName": "Iraq", - "Name": "IQ", - "ThreeLetterISORegionName": "IRQ", - "TwoLetterISORegionName": "IQ" - }, - { - "DisplayName": "Ireland", - "Name": "IE", - "ThreeLetterISORegionName": "IRL", - "TwoLetterISORegionName": "IE" - }, - { - "DisplayName": "Islamic Republic of Pakistan", - "Name": "PK", - "ThreeLetterISORegionName": "PAK", - "TwoLetterISORegionName": "PK" - }, - { - "DisplayName": "Israel", - "Name": "IL", - "ThreeLetterISORegionName": "ISR", - "TwoLetterISORegionName": "IL" - }, - { - "DisplayName": "Italy", - "Name": "IT", - "ThreeLetterISORegionName": "ITA", - "TwoLetterISORegionName": "IT" - }, - { - "DisplayName": "Ivory Coast", - "Name": "CI", - "ThreeLetterISORegionName": "CIV", - "TwoLetterISORegionName": "CI" - }, - { - "DisplayName": "Jamaica", - "Name": "JM", - "ThreeLetterISORegionName": "JAM", - "TwoLetterISORegionName": "JM" - }, - { - "DisplayName": "Japan", - "Name": "JP", - "ThreeLetterISORegionName": "JPN", - "TwoLetterISORegionName": "JP" - }, - { - "DisplayName": "Jordan", - "Name": "JO", - "ThreeLetterISORegionName": "JOR", - "TwoLetterISORegionName": "JO" - }, - { - "DisplayName": "Kazakhstan", - "Name": "KZ", - "ThreeLetterISORegionName": "KAZ", - "TwoLetterISORegionName": "KZ" - }, - { - "DisplayName": "Kenya", - "Name": "KE", - "ThreeLetterISORegionName": "KEN", - "TwoLetterISORegionName": "KE" - }, - { - "DisplayName": "Korea", - "Name": "KR", - "ThreeLetterISORegionName": "KOR", - "TwoLetterISORegionName": "KR" - }, - { - "DisplayName": "Kuwait", - "Name": "KW", - "ThreeLetterISORegionName": "KWT", - "TwoLetterISORegionName": "KW" - }, - { - "DisplayName": "Kyrgyzstan", - "Name": "KG", - "ThreeLetterISORegionName": "KGZ", - "TwoLetterISORegionName": "KG" - }, - { - "DisplayName": "Lao P.D.R.", - "Name": "LA", - "ThreeLetterISORegionName": "LAO", - "TwoLetterISORegionName": "LA" - }, - { - "DisplayName": "Latin America", - "Name": "419", - "ThreeLetterISORegionName": "419", - "TwoLetterISORegionName": "419" - }, - { - "DisplayName": "Latvia", - "Name": "LV", - "ThreeLetterISORegionName": "LVA", - "TwoLetterISORegionName": "LV" - }, - { - "DisplayName": "Lebanon", - "Name": "LB", - "ThreeLetterISORegionName": "LBN", - "TwoLetterISORegionName": "LB" - }, - { - "DisplayName": "Libya", - "Name": "LY", - "ThreeLetterISORegionName": "LBY", - "TwoLetterISORegionName": "LY" - }, - { - "DisplayName": "Liechtenstein", - "Name": "LI", - "ThreeLetterISORegionName": "LIE", - "TwoLetterISORegionName": "LI" - }, - { - "DisplayName": "Lithuania", - "Name": "LT", - "ThreeLetterISORegionName": "LTU", - "TwoLetterISORegionName": "LT" - }, - { - "DisplayName": "Luxembourg", - "Name": "LU", - "ThreeLetterISORegionName": "LUX", - "TwoLetterISORegionName": "LU" - }, - { - "DisplayName": "Macao S.A.R.", - "Name": "MO", - "ThreeLetterISORegionName": "MAC", - "TwoLetterISORegionName": "MO" - }, - { - "DisplayName": "Macedonia (FYROM)", - "Name": "MK", - "ThreeLetterISORegionName": "MKD", - "TwoLetterISORegionName": "MK" - }, - { - "DisplayName": "Malaysia", - "Name": "MY", - "ThreeLetterISORegionName": "MYS", - "TwoLetterISORegionName": "MY" - }, - { - "DisplayName": "Maldives", - "Name": "MV", - "ThreeLetterISORegionName": "MDV", - "TwoLetterISORegionName": "MV" - }, - { - "DisplayName": "Mali", - "Name": "ML", - "ThreeLetterISORegionName": "MLI", - "TwoLetterISORegionName": "ML" - }, - { - "DisplayName": "Malta", - "Name": "MT", - "ThreeLetterISORegionName": "MLT", - "TwoLetterISORegionName": "MT" - }, - { - "DisplayName": "Mexico", - "Name": "MX", - "ThreeLetterISORegionName": "MEX", - "TwoLetterISORegionName": "MX" - }, - { - "DisplayName": "Mongolia", - "Name": "MN", - "ThreeLetterISORegionName": "MNG", - "TwoLetterISORegionName": "MN" - }, - { - "DisplayName": "Montenegro", - "Name": "ME", - "ThreeLetterISORegionName": "MNE", - "TwoLetterISORegionName": "ME" - }, - { - "DisplayName": "Morocco", - "Name": "MA", - "ThreeLetterISORegionName": "MAR", - "TwoLetterISORegionName": "MA" - }, - { - "DisplayName": "Nepal", - "Name": "NP", - "ThreeLetterISORegionName": "NPL", - "TwoLetterISORegionName": "NP" - }, - { - "DisplayName": "Netherlands", - "Name": "NL", - "ThreeLetterISORegionName": "NLD", - "TwoLetterISORegionName": "NL" - }, - { - "DisplayName": "New Zealand", - "Name": "NZ", - "ThreeLetterISORegionName": "NZL", - "TwoLetterISORegionName": "NZ" - }, - { - "DisplayName": "Nicaragua", - "Name": "NI", - "ThreeLetterISORegionName": "NIC", - "TwoLetterISORegionName": "NI" - }, - { - "DisplayName": "Nigeria", - "Name": "NG", - "ThreeLetterISORegionName": "NGA", - "TwoLetterISORegionName": "NG" - }, - { - "DisplayName": "Norway", - "Name": "NO", - "ThreeLetterISORegionName": "NOR", - "TwoLetterISORegionName": "NO" - }, - { - "DisplayName": "Oman", - "Name": "OM", - "ThreeLetterISORegionName": "OMN", - "TwoLetterISORegionName": "OM" - }, - { - "DisplayName": "Panama", - "Name": "PA", - "ThreeLetterISORegionName": "PAN", - "TwoLetterISORegionName": "PA" - }, - { - "DisplayName": "Paraguay", - "Name": "PY", - "ThreeLetterISORegionName": "PRY", - "TwoLetterISORegionName": "PY" - }, - { - "DisplayName": "People's Republic of China", - "Name": "CN", - "ThreeLetterISORegionName": "CHN", - "TwoLetterISORegionName": "CN" - }, - { - "DisplayName": "Peru", - "Name": "PE", - "ThreeLetterISORegionName": "PER", - "TwoLetterISORegionName": "PE" - }, - { - "DisplayName": "Philippines", - "Name": "PH", - "ThreeLetterISORegionName": "PHL", - "TwoLetterISORegionName": "PH" - }, - { - "DisplayName": "Poland", - "Name": "PL", - "ThreeLetterISORegionName": "POL", - "TwoLetterISORegionName": "PL" - }, - { - "DisplayName": "Portugal", - "Name": "PT", - "ThreeLetterISORegionName": "PRT", - "TwoLetterISORegionName": "PT" - }, - { - "DisplayName": "Principality of Monaco", - "Name": "MC", - "ThreeLetterISORegionName": "MCO", - "TwoLetterISORegionName": "MC" - }, - { - "DisplayName": "Puerto Rico", - "Name": "PR", - "ThreeLetterISORegionName": "PRI", - "TwoLetterISORegionName": "PR" - }, - { - "DisplayName": "Qatar", - "Name": "QA", - "ThreeLetterISORegionName": "QAT", - "TwoLetterISORegionName": "QA" - }, - { - "DisplayName": "Republica Moldova", - "Name": "MD", - "ThreeLetterISORegionName": "MDA", - "TwoLetterISORegionName": "MD" - }, - { - "DisplayName": "Réunion", - "Name": "RE", - "ThreeLetterISORegionName": "REU", - "TwoLetterISORegionName": "RE" - }, - { - "DisplayName": "Romania", - "Name": "RO", - "ThreeLetterISORegionName": "ROU", - "TwoLetterISORegionName": "RO" - }, - { - "DisplayName": "Russia", - "Name": "RU", - "ThreeLetterISORegionName": "RUS", - "TwoLetterISORegionName": "RU" - }, - { - "DisplayName": "Rwanda", - "Name": "RW", - "ThreeLetterISORegionName": "RWA", - "TwoLetterISORegionName": "RW" - }, - { - "DisplayName": "Saudi Arabia", - "Name": "SA", - "ThreeLetterISORegionName": "SAU", - "TwoLetterISORegionName": "SA" - }, - { - "DisplayName": "Senegal", - "Name": "SN", - "ThreeLetterISORegionName": "SEN", - "TwoLetterISORegionName": "SN" - }, - { - "DisplayName": "Serbia", - "Name": "RS", - "ThreeLetterISORegionName": "SRB", - "TwoLetterISORegionName": "RS" - }, - { - "DisplayName": "Serbia and Montenegro (Former)", - "Name": "CS", - "ThreeLetterISORegionName": "SCG", - "TwoLetterISORegionName": "CS" - }, - { - "DisplayName": "Singapore", - "Name": "SG", - "ThreeLetterISORegionName": "SGP", - "TwoLetterISORegionName": "SG" - }, - { - "DisplayName": "Slovakia", - "Name": "SK", - "ThreeLetterISORegionName": "SVK", - "TwoLetterISORegionName": "SK" - }, - { - "DisplayName": "Slovenia", - "Name": "SI", - "ThreeLetterISORegionName": "SVN", - "TwoLetterISORegionName": "SI" - }, - { - "DisplayName": "Soomaaliya", - "Name": "SO", - "ThreeLetterISORegionName": "SOM", - "TwoLetterISORegionName": "SO" - }, - { - "DisplayName": "South Africa", - "Name": "ZA", - "ThreeLetterISORegionName": "ZAF", - "TwoLetterISORegionName": "ZA" - }, - { - "DisplayName": "Spain", - "Name": "ES", - "ThreeLetterISORegionName": "ESP", - "TwoLetterISORegionName": "ES" - }, - { - "DisplayName": "Sri Lanka", - "Name": "LK", - "ThreeLetterISORegionName": "LKA", - "TwoLetterISORegionName": "LK" - }, - { - "DisplayName": "Sweden", - "Name": "SE", - "ThreeLetterISORegionName": "SWE", - "TwoLetterISORegionName": "SE" - }, - { - "DisplayName": "Switzerland", - "Name": "CH", - "ThreeLetterISORegionName": "CHE", - "TwoLetterISORegionName": "CH" - }, - { - "DisplayName": "Syria", - "Name": "SY", - "ThreeLetterISORegionName": "SYR", - "TwoLetterISORegionName": "SY" - }, - { - "DisplayName": "Taiwan", - "Name": "TW", - "ThreeLetterISORegionName": "TWN", - "TwoLetterISORegionName": "TW" - }, - { - "DisplayName": "Tajikistan", - "Name": "TJ", - "ThreeLetterISORegionName": "TAJ", - "TwoLetterISORegionName": "TJ" - }, - { - "DisplayName": "Thailand", - "Name": "TH", - "ThreeLetterISORegionName": "THA", - "TwoLetterISORegionName": "TH" - }, - { - "DisplayName": "Trinidad and Tobago", - "Name": "TT", - "ThreeLetterISORegionName": "TTO", - "TwoLetterISORegionName": "TT" - }, - { - "DisplayName": "Tunisia", - "Name": "TN", - "ThreeLetterISORegionName": "TUN", - "TwoLetterISORegionName": "TN" - }, - { - "DisplayName": "Turkey", - "Name": "TR", - "ThreeLetterISORegionName": "TUR", - "TwoLetterISORegionName": "TR" - }, - { - "DisplayName": "Turkmenistan", - "Name": "TM", - "ThreeLetterISORegionName": "TKM", - "TwoLetterISORegionName": "TM" - }, - { - "DisplayName": "U.A.E.", - "Name": "AE", - "ThreeLetterISORegionName": "ARE", - "TwoLetterISORegionName": "AE" - }, - { - "DisplayName": "Ukraine", - "Name": "UA", - "ThreeLetterISORegionName": "UKR", - "TwoLetterISORegionName": "UA" - }, - { - "DisplayName": "United Kingdom", - "Name": "GB", - "ThreeLetterISORegionName": "GBR", - "TwoLetterISORegionName": "GB" - }, - { - "DisplayName": "United States", - "Name": "US", - "ThreeLetterISORegionName": "USA", - "TwoLetterISORegionName": "US" - }, - { - "DisplayName": "Uruguay", - "Name": "UY", - "ThreeLetterISORegionName": "URY", - "TwoLetterISORegionName": "UY" - }, - { - "DisplayName": "Uzbekistan", - "Name": "UZ", - "ThreeLetterISORegionName": "UZB", - "TwoLetterISORegionName": "UZ" - }, - { - "DisplayName": "Vietnam", - "Name": "VN", - "ThreeLetterISORegionName": "VNM", - "TwoLetterISORegionName": "VN" - }, - { - "DisplayName": "Yemen", - "Name": "YE", - "ThreeLetterISORegionName": "YEM", - "TwoLetterISORegionName": "YE" - }, - { - "DisplayName": "Zimbabwe", - "Name": "ZW", - "ThreeLetterISORegionName": "ZWE", - "TwoLetterISORegionName": "ZW" - } + { + "DisplayName": "Afghanistan", + "Name": "AF", + "ThreeLetterISORegionName": "AFG", + "TwoLetterISORegionName": "AF" + }, + { + "DisplayName": "Albania", + "Name": "AL", + "ThreeLetterISORegionName": "ALB", + "TwoLetterISORegionName": "AL" + }, + { + "DisplayName": "Algeria", + "Name": "DZ", + "ThreeLetterISORegionName": "DZA", + "TwoLetterISORegionName": "DZ" + }, + { + "DisplayName": "Argentina", + "Name": "AR", + "ThreeLetterISORegionName": "ARG", + "TwoLetterISORegionName": "AR" + }, + { + "DisplayName": "Armenia", + "Name": "AM", + "ThreeLetterISORegionName": "ARM", + "TwoLetterISORegionName": "AM" + }, + { + "DisplayName": "Australia", + "Name": "AU", + "ThreeLetterISORegionName": "AUS", + "TwoLetterISORegionName": "AU" + }, + { + "DisplayName": "Austria", + "Name": "AT", + "ThreeLetterISORegionName": "AUT", + "TwoLetterISORegionName": "AT" + }, + { + "DisplayName": "Azerbaijan", + "Name": "AZ", + "ThreeLetterISORegionName": "AZE", + "TwoLetterISORegionName": "AZ" + }, + { + "DisplayName": "Bahrain", + "Name": "BH", + "ThreeLetterISORegionName": "BHR", + "TwoLetterISORegionName": "BH" + }, + { + "DisplayName": "Bangladesh", + "Name": "BD", + "ThreeLetterISORegionName": "BGD", + "TwoLetterISORegionName": "BD" + }, + { + "DisplayName": "Belarus", + "Name": "BY", + "ThreeLetterISORegionName": "BLR", + "TwoLetterISORegionName": "BY" + }, + { + "DisplayName": "Belgium", + "Name": "BE", + "ThreeLetterISORegionName": "BEL", + "TwoLetterISORegionName": "BE" + }, + { + "DisplayName": "Belize", + "Name": "BZ", + "ThreeLetterISORegionName": "BLZ", + "TwoLetterISORegionName": "BZ" + }, + { + "DisplayName": "Bolivarian Republic of Venezuela", + "Name": "VE", + "ThreeLetterISORegionName": "VEN", + "TwoLetterISORegionName": "VE" + }, + { + "DisplayName": "Bolivia", + "Name": "BO", + "ThreeLetterISORegionName": "BOL", + "TwoLetterISORegionName": "BO" + }, + { + "DisplayName": "Bosnia and Herzegovina", + "Name": "BA", + "ThreeLetterISORegionName": "BIH", + "TwoLetterISORegionName": "BA" + }, + { + "DisplayName": "Botswana", + "Name": "BW", + "ThreeLetterISORegionName": "BWA", + "TwoLetterISORegionName": "BW" + }, + { + "DisplayName": "Brazil", + "Name": "BR", + "ThreeLetterISORegionName": "BRA", + "TwoLetterISORegionName": "BR" + }, + { + "DisplayName": "Brunei Darussalam", + "Name": "BN", + "ThreeLetterISORegionName": "BRN", + "TwoLetterISORegionName": "BN" + }, + { + "DisplayName": "Bulgaria", + "Name": "BG", + "ThreeLetterISORegionName": "BGR", + "TwoLetterISORegionName": "BG" + }, + { + "DisplayName": "Cambodia", + "Name": "KH", + "ThreeLetterISORegionName": "KHM", + "TwoLetterISORegionName": "KH" + }, + { + "DisplayName": "Cameroon", + "Name": "CM", + "ThreeLetterISORegionName": "CMR", + "TwoLetterISORegionName": "CM" + }, + { + "DisplayName": "Canada", + "Name": "CA", + "ThreeLetterISORegionName": "CAN", + "TwoLetterISORegionName": "CA" + }, + { + "DisplayName": "Caribbean", + "Name": "029", + "ThreeLetterISORegionName": "029", + "TwoLetterISORegionName": "029" + }, + { + "DisplayName": "Chile", + "Name": "CL", + "ThreeLetterISORegionName": "CHL", + "TwoLetterISORegionName": "CL" + }, + { + "DisplayName": "Colombia", + "Name": "CO", + "ThreeLetterISORegionName": "COL", + "TwoLetterISORegionName": "CO" + }, + { + "DisplayName": "Congo [DRC]", + "Name": "CD", + "ThreeLetterISORegionName": "COD", + "TwoLetterISORegionName": "CD" + }, + { + "DisplayName": "Costa Rica", + "Name": "CR", + "ThreeLetterISORegionName": "CRI", + "TwoLetterISORegionName": "CR" + }, + { + "DisplayName": "Croatia", + "Name": "HR", + "ThreeLetterISORegionName": "HRV", + "TwoLetterISORegionName": "HR" + }, + { + "DisplayName": "Czech Republic", + "Name": "CZ", + "ThreeLetterISORegionName": "CZE", + "TwoLetterISORegionName": "CZ" + }, + { + "DisplayName": "Denmark", + "Name": "DK", + "ThreeLetterISORegionName": "DNK", + "TwoLetterISORegionName": "DK" + }, + { + "DisplayName": "Dominican Republic", + "Name": "DO", + "ThreeLetterISORegionName": "DOM", + "TwoLetterISORegionName": "DO" + }, + { + "DisplayName": "Ecuador", + "Name": "EC", + "ThreeLetterISORegionName": "ECU", + "TwoLetterISORegionName": "EC" + }, + { + "DisplayName": "Egypt", + "Name": "EG", + "ThreeLetterISORegionName": "EGY", + "TwoLetterISORegionName": "EG" + }, + { + "DisplayName": "El Salvador", + "Name": "SV", + "ThreeLetterISORegionName": "SLV", + "TwoLetterISORegionName": "SV" + }, + { + "DisplayName": "Eritrea", + "Name": "ER", + "ThreeLetterISORegionName": "ERI", + "TwoLetterISORegionName": "ER" + }, + { + "DisplayName": "Estonia", + "Name": "EE", + "ThreeLetterISORegionName": "EST", + "TwoLetterISORegionName": "EE" + }, + { + "DisplayName": "Ethiopia", + "Name": "ET", + "ThreeLetterISORegionName": "ETH", + "TwoLetterISORegionName": "ET" + }, + { + "DisplayName": "Faroe Islands", + "Name": "FO", + "ThreeLetterISORegionName": "FRO", + "TwoLetterISORegionName": "FO" + }, + { + "DisplayName": "Finland", + "Name": "FI", + "ThreeLetterISORegionName": "FIN", + "TwoLetterISORegionName": "FI" + }, + { + "DisplayName": "France", + "Name": "FR", + "ThreeLetterISORegionName": "FRA", + "TwoLetterISORegionName": "FR" + }, + { + "DisplayName": "Georgia", + "Name": "GE", + "ThreeLetterISORegionName": "GEO", + "TwoLetterISORegionName": "GE" + }, + { + "DisplayName": "Germany", + "Name": "DE", + "ThreeLetterISORegionName": "DEU", + "TwoLetterISORegionName": "DE" + }, + { + "DisplayName": "Greece", + "Name": "GR", + "ThreeLetterISORegionName": "GRC", + "TwoLetterISORegionName": "GR" + }, + { + "DisplayName": "Greenland", + "Name": "GL", + "ThreeLetterISORegionName": "GRL", + "TwoLetterISORegionName": "GL" + }, + { + "DisplayName": "Guatemala", + "Name": "GT", + "ThreeLetterISORegionName": "GTM", + "TwoLetterISORegionName": "GT" + }, + { + "DisplayName": "Haiti", + "Name": "HT", + "ThreeLetterISORegionName": "HTI", + "TwoLetterISORegionName": "HT" + }, + { + "DisplayName": "Honduras", + "Name": "HN", + "ThreeLetterISORegionName": "HND", + "TwoLetterISORegionName": "HN" + }, + { + "DisplayName": "Hong Kong S.A.R.", + "Name": "HK", + "ThreeLetterISORegionName": "HKG", + "TwoLetterISORegionName": "HK" + }, + { + "DisplayName": "Hungary", + "Name": "HU", + "ThreeLetterISORegionName": "HUN", + "TwoLetterISORegionName": "HU" + }, + { + "DisplayName": "Iceland", + "Name": "IS", + "ThreeLetterISORegionName": "ISL", + "TwoLetterISORegionName": "IS" + }, + { + "DisplayName": "India", + "Name": "IN", + "ThreeLetterISORegionName": "IND", + "TwoLetterISORegionName": "IN" + }, + { + "DisplayName": "Indonesia", + "Name": "ID", + "ThreeLetterISORegionName": "IDN", + "TwoLetterISORegionName": "ID" + }, + { + "DisplayName": "Iran", + "Name": "IR", + "ThreeLetterISORegionName": "IRN", + "TwoLetterISORegionName": "IR" + }, + { + "DisplayName": "Iraq", + "Name": "IQ", + "ThreeLetterISORegionName": "IRQ", + "TwoLetterISORegionName": "IQ" + }, + { + "DisplayName": "Ireland", + "Name": "IE", + "ThreeLetterISORegionName": "IRL", + "TwoLetterISORegionName": "IE" + }, + { + "DisplayName": "Islamic Republic of Pakistan", + "Name": "PK", + "ThreeLetterISORegionName": "PAK", + "TwoLetterISORegionName": "PK" + }, + { + "DisplayName": "Israel", + "Name": "IL", + "ThreeLetterISORegionName": "ISR", + "TwoLetterISORegionName": "IL" + }, + { + "DisplayName": "Italy", + "Name": "IT", + "ThreeLetterISORegionName": "ITA", + "TwoLetterISORegionName": "IT" + }, + { + "DisplayName": "Ivory Coast", + "Name": "CI", + "ThreeLetterISORegionName": "CIV", + "TwoLetterISORegionName": "CI" + }, + { + "DisplayName": "Jamaica", + "Name": "JM", + "ThreeLetterISORegionName": "JAM", + "TwoLetterISORegionName": "JM" + }, + { + "DisplayName": "Japan", + "Name": "JP", + "ThreeLetterISORegionName": "JPN", + "TwoLetterISORegionName": "JP" + }, + { + "DisplayName": "Jordan", + "Name": "JO", + "ThreeLetterISORegionName": "JOR", + "TwoLetterISORegionName": "JO" + }, + { + "DisplayName": "Kazakhstan", + "Name": "KZ", + "ThreeLetterISORegionName": "KAZ", + "TwoLetterISORegionName": "KZ" + }, + { + "DisplayName": "Kenya", + "Name": "KE", + "ThreeLetterISORegionName": "KEN", + "TwoLetterISORegionName": "KE" + }, + { + "DisplayName": "Korea", + "Name": "KR", + "ThreeLetterISORegionName": "KOR", + "TwoLetterISORegionName": "KR" + }, + { + "DisplayName": "Kuwait", + "Name": "KW", + "ThreeLetterISORegionName": "KWT", + "TwoLetterISORegionName": "KW" + }, + { + "DisplayName": "Kyrgyzstan", + "Name": "KG", + "ThreeLetterISORegionName": "KGZ", + "TwoLetterISORegionName": "KG" + }, + { + "DisplayName": "Lao P.D.R.", + "Name": "LA", + "ThreeLetterISORegionName": "LAO", + "TwoLetterISORegionName": "LA" + }, + { + "DisplayName": "Latin America", + "Name": "419", + "ThreeLetterISORegionName": "419", + "TwoLetterISORegionName": "419" + }, + { + "DisplayName": "Latvia", + "Name": "LV", + "ThreeLetterISORegionName": "LVA", + "TwoLetterISORegionName": "LV" + }, + { + "DisplayName": "Lebanon", + "Name": "LB", + "ThreeLetterISORegionName": "LBN", + "TwoLetterISORegionName": "LB" + }, + { + "DisplayName": "Libya", + "Name": "LY", + "ThreeLetterISORegionName": "LBY", + "TwoLetterISORegionName": "LY" + }, + { + "DisplayName": "Liechtenstein", + "Name": "LI", + "ThreeLetterISORegionName": "LIE", + "TwoLetterISORegionName": "LI" + }, + { + "DisplayName": "Lithuania", + "Name": "LT", + "ThreeLetterISORegionName": "LTU", + "TwoLetterISORegionName": "LT" + }, + { + "DisplayName": "Luxembourg", + "Name": "LU", + "ThreeLetterISORegionName": "LUX", + "TwoLetterISORegionName": "LU" + }, + { + "DisplayName": "Macao S.A.R.", + "Name": "MO", + "ThreeLetterISORegionName": "MAC", + "TwoLetterISORegionName": "MO" + }, + { + "DisplayName": "Macedonia (FYROM)", + "Name": "MK", + "ThreeLetterISORegionName": "MKD", + "TwoLetterISORegionName": "MK" + }, + { + "DisplayName": "Malaysia", + "Name": "MY", + "ThreeLetterISORegionName": "MYS", + "TwoLetterISORegionName": "MY" + }, + { + "DisplayName": "Maldives", + "Name": "MV", + "ThreeLetterISORegionName": "MDV", + "TwoLetterISORegionName": "MV" + }, + { + "DisplayName": "Mali", + "Name": "ML", + "ThreeLetterISORegionName": "MLI", + "TwoLetterISORegionName": "ML" + }, + { + "DisplayName": "Malta", + "Name": "MT", + "ThreeLetterISORegionName": "MLT", + "TwoLetterISORegionName": "MT" + }, + { + "DisplayName": "Mexico", + "Name": "MX", + "ThreeLetterISORegionName": "MEX", + "TwoLetterISORegionName": "MX" + }, + { + "DisplayName": "Mongolia", + "Name": "MN", + "ThreeLetterISORegionName": "MNG", + "TwoLetterISORegionName": "MN" + }, + { + "DisplayName": "Montenegro", + "Name": "ME", + "ThreeLetterISORegionName": "MNE", + "TwoLetterISORegionName": "ME" + }, + { + "DisplayName": "Morocco", + "Name": "MA", + "ThreeLetterISORegionName": "MAR", + "TwoLetterISORegionName": "MA" + }, + { + "DisplayName": "Nepal", + "Name": "NP", + "ThreeLetterISORegionName": "NPL", + "TwoLetterISORegionName": "NP" + }, + { + "DisplayName": "Netherlands", + "Name": "NL", + "ThreeLetterISORegionName": "NLD", + "TwoLetterISORegionName": "NL" + }, + { + "DisplayName": "New Zealand", + "Name": "NZ", + "ThreeLetterISORegionName": "NZL", + "TwoLetterISORegionName": "NZ" + }, + { + "DisplayName": "Nicaragua", + "Name": "NI", + "ThreeLetterISORegionName": "NIC", + "TwoLetterISORegionName": "NI" + }, + { + "DisplayName": "Nigeria", + "Name": "NG", + "ThreeLetterISORegionName": "NGA", + "TwoLetterISORegionName": "NG" + }, + { + "DisplayName": "Norway", + "Name": "NO", + "ThreeLetterISORegionName": "NOR", + "TwoLetterISORegionName": "NO" + }, + { + "DisplayName": "Oman", + "Name": "OM", + "ThreeLetterISORegionName": "OMN", + "TwoLetterISORegionName": "OM" + }, + { + "DisplayName": "Panama", + "Name": "PA", + "ThreeLetterISORegionName": "PAN", + "TwoLetterISORegionName": "PA" + }, + { + "DisplayName": "Paraguay", + "Name": "PY", + "ThreeLetterISORegionName": "PRY", + "TwoLetterISORegionName": "PY" + }, + { + "DisplayName": "People's Republic of China", + "Name": "CN", + "ThreeLetterISORegionName": "CHN", + "TwoLetterISORegionName": "CN" + }, + { + "DisplayName": "Peru", + "Name": "PE", + "ThreeLetterISORegionName": "PER", + "TwoLetterISORegionName": "PE" + }, + { + "DisplayName": "Philippines", + "Name": "PH", + "ThreeLetterISORegionName": "PHL", + "TwoLetterISORegionName": "PH" + }, + { + "DisplayName": "Poland", + "Name": "PL", + "ThreeLetterISORegionName": "POL", + "TwoLetterISORegionName": "PL" + }, + { + "DisplayName": "Portugal", + "Name": "PT", + "ThreeLetterISORegionName": "PRT", + "TwoLetterISORegionName": "PT" + }, + { + "DisplayName": "Principality of Monaco", + "Name": "MC", + "ThreeLetterISORegionName": "MCO", + "TwoLetterISORegionName": "MC" + }, + { + "DisplayName": "Puerto Rico", + "Name": "PR", + "ThreeLetterISORegionName": "PRI", + "TwoLetterISORegionName": "PR" + }, + { + "DisplayName": "Qatar", + "Name": "QA", + "ThreeLetterISORegionName": "QAT", + "TwoLetterISORegionName": "QA" + }, + { + "DisplayName": "Republica Moldova", + "Name": "MD", + "ThreeLetterISORegionName": "MDA", + "TwoLetterISORegionName": "MD" + }, + { + "DisplayName": "Réunion", + "Name": "RE", + "ThreeLetterISORegionName": "REU", + "TwoLetterISORegionName": "RE" + }, + { + "DisplayName": "Romania", + "Name": "RO", + "ThreeLetterISORegionName": "ROU", + "TwoLetterISORegionName": "RO" + }, + { + "DisplayName": "Russia", + "Name": "RU", + "ThreeLetterISORegionName": "RUS", + "TwoLetterISORegionName": "RU" + }, + { + "DisplayName": "Rwanda", + "Name": "RW", + "ThreeLetterISORegionName": "RWA", + "TwoLetterISORegionName": "RW" + }, + { + "DisplayName": "Saudi Arabia", + "Name": "SA", + "ThreeLetterISORegionName": "SAU", + "TwoLetterISORegionName": "SA" + }, + { + "DisplayName": "Senegal", + "Name": "SN", + "ThreeLetterISORegionName": "SEN", + "TwoLetterISORegionName": "SN" + }, + { + "DisplayName": "Serbia", + "Name": "RS", + "ThreeLetterISORegionName": "SRB", + "TwoLetterISORegionName": "RS" + }, + { + "DisplayName": "Serbia and Montenegro (Former)", + "Name": "CS", + "ThreeLetterISORegionName": "SCG", + "TwoLetterISORegionName": "CS" + }, + { + "DisplayName": "Singapore", + "Name": "SG", + "ThreeLetterISORegionName": "SGP", + "TwoLetterISORegionName": "SG" + }, + { + "DisplayName": "Slovakia", + "Name": "SK", + "ThreeLetterISORegionName": "SVK", + "TwoLetterISORegionName": "SK" + }, + { + "DisplayName": "Slovenia", + "Name": "SI", + "ThreeLetterISORegionName": "SVN", + "TwoLetterISORegionName": "SI" + }, + { + "DisplayName": "Soomaaliya", + "Name": "SO", + "ThreeLetterISORegionName": "SOM", + "TwoLetterISORegionName": "SO" + }, + { + "DisplayName": "South Africa", + "Name": "ZA", + "ThreeLetterISORegionName": "ZAF", + "TwoLetterISORegionName": "ZA" + }, + { + "DisplayName": "Spain", + "Name": "ES", + "ThreeLetterISORegionName": "ESP", + "TwoLetterISORegionName": "ES" + }, + { + "DisplayName": "Sri Lanka", + "Name": "LK", + "ThreeLetterISORegionName": "LKA", + "TwoLetterISORegionName": "LK" + }, + { + "DisplayName": "Sweden", + "Name": "SE", + "ThreeLetterISORegionName": "SWE", + "TwoLetterISORegionName": "SE" + }, + { + "DisplayName": "Switzerland", + "Name": "CH", + "ThreeLetterISORegionName": "CHE", + "TwoLetterISORegionName": "CH" + }, + { + "DisplayName": "Syria", + "Name": "SY", + "ThreeLetterISORegionName": "SYR", + "TwoLetterISORegionName": "SY" + }, + { + "DisplayName": "Taiwan", + "Name": "TW", + "ThreeLetterISORegionName": "TWN", + "TwoLetterISORegionName": "TW" + }, + { + "DisplayName": "Tajikistan", + "Name": "TJ", + "ThreeLetterISORegionName": "TAJ", + "TwoLetterISORegionName": "TJ" + }, + { + "DisplayName": "Thailand", + "Name": "TH", + "ThreeLetterISORegionName": "THA", + "TwoLetterISORegionName": "TH" + }, + { + "DisplayName": "Trinidad and Tobago", + "Name": "TT", + "ThreeLetterISORegionName": "TTO", + "TwoLetterISORegionName": "TT" + }, + { + "DisplayName": "Tunisia", + "Name": "TN", + "ThreeLetterISORegionName": "TUN", + "TwoLetterISORegionName": "TN" + }, + { + "DisplayName": "Turkey", + "Name": "TR", + "ThreeLetterISORegionName": "TUR", + "TwoLetterISORegionName": "TR" + }, + { + "DisplayName": "Turkmenistan", + "Name": "TM", + "ThreeLetterISORegionName": "TKM", + "TwoLetterISORegionName": "TM" + }, + { + "DisplayName": "U.A.E.", + "Name": "AE", + "ThreeLetterISORegionName": "ARE", + "TwoLetterISORegionName": "AE" + }, + { + "DisplayName": "Ukraine", + "Name": "UA", + "ThreeLetterISORegionName": "UKR", + "TwoLetterISORegionName": "UA" + }, + { + "DisplayName": "United Kingdom", + "Name": "GB", + "ThreeLetterISORegionName": "GBR", + "TwoLetterISORegionName": "GB" + }, + { + "DisplayName": "United States", + "Name": "US", + "ThreeLetterISORegionName": "USA", + "TwoLetterISORegionName": "US" + }, + { + "DisplayName": "Uruguay", + "Name": "UY", + "ThreeLetterISORegionName": "URY", + "TwoLetterISORegionName": "UY" + }, + { + "DisplayName": "Uzbekistan", + "Name": "UZ", + "ThreeLetterISORegionName": "UZB", + "TwoLetterISORegionName": "UZ" + }, + { + "DisplayName": "Vietnam", + "Name": "VN", + "ThreeLetterISORegionName": "VNM", + "TwoLetterISORegionName": "VN" + }, + { + "DisplayName": "Yemen", + "Name": "YE", + "ThreeLetterISORegionName": "YEM", + "TwoLetterISORegionName": "YE" + }, + { + "DisplayName": "Zimbabwe", + "Name": "ZW", + "ThreeLetterISORegionName": "ZWE", + "TwoLetterISORegionName": "ZW" + } ] diff --git a/Emby.Server.Implementations/Localization/iso6392.txt b/Emby.Server.Implementations/Localization/iso6392.txt index a7e7cfc208..f2cea78b62 100644 --- a/Emby.Server.Implementations/Localization/iso6392.txt +++ b/Emby.Server.Implementations/Localization/iso6392.txt @@ -1,4 +1,4 @@ -aar||aa|Afar|afar +aar||aa|Afar|afar abk||ab|Abkhazian|abkhaze ace|||Achinese|aceh ach|||Acoli|acoli @@ -485,4 +485,4 @@ znd|||Zande languages|zandé, langues zul||zu|Zulu|zoulou zun|||Zuni|zuni zxx|||No linguistic content; Not applicable|pas de contenu linguistique; non applicable -zza|||Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki|zaza; dimili; dimli; kirdki; kirmanjki; zazaki \ No newline at end of file +zza|||Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki|zaza; dimili; dimli; kirdki; kirmanjki; zazaki diff --git a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs index 2db7b01db5..316c2c2a3f 100644 --- a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs +++ b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs @@ -1,11 +1,3 @@ -using MediaBrowser.Controller.Chapters; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; using System.Globalization; @@ -13,11 +5,15 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; - -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.IO; +using MediaBrowser.Controller.Chapters; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.MediaInfo; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.MediaEncoder { diff --git a/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs index 9d880b0c95..304b445651 100644 --- a/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs +++ b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs @@ -19,10 +19,10 @@ namespace Emby.Server.Implementations.Net //TODO Remove and reimplement using the IsDisposed property directly. /// - /// Throws an if the property is true. + /// Throws an if the property is true. /// /// - /// Thrown if the property is true. + /// Thrown if the property is true. /// protected virtual void ThrowIfDisposed() { diff --git a/Emby.Server.Implementations/Net/IWebSocket.cs b/Emby.Server.Implementations/Net/IWebSocket.cs index f79199a071..4671de07c5 100644 --- a/Emby.Server.Implementations/Net/IWebSocket.cs +++ b/Emby.Server.Implementations/Net/IWebSocket.cs @@ -1,7 +1,7 @@ -using System; +using System; +using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; -using System.Net.WebSockets; namespace Emby.Server.Implementations.Net { diff --git a/Emby.Server.Implementations/Net/SocketFactory.cs b/Emby.Server.Implementations/Net/SocketFactory.cs index 51d08bd6f3..2e22fbbb89 100644 --- a/Emby.Server.Implementations/Net/SocketFactory.cs +++ b/Emby.Server.Implementations/Net/SocketFactory.cs @@ -1,10 +1,10 @@ -using System; +using System; using System.IO; using System.Net; using System.Net.Sockets; using Emby.Server.Implementations.Networking; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Net; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Net { diff --git a/Emby.Server.Implementations/Net/UdpSocket.cs b/Emby.Server.Implementations/Net/UdpSocket.cs index 39f25e024b..d488554860 100644 --- a/Emby.Server.Implementations/Net/UdpSocket.cs +++ b/Emby.Server.Implementations/Net/UdpSocket.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Net; using System.Net.Sockets; using System.Threading; @@ -133,8 +133,8 @@ namespace Emby.Server.Implementations.Net { ThrowIfDisposed(); - IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); - EndPoint remoteEndPoint = (EndPoint)sender; + var sender = new IPEndPoint(IPAddress.Any, 0); + var remoteEndPoint = (EndPoint)sender; var receivedBytes = _Socket.EndReceiveFrom(result, ref remoteEndPoint); diff --git a/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs b/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs index 7b7f12d505..3ab8e854a0 100644 --- a/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs +++ b/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System; using MediaBrowser.Model.Services; namespace Emby.Server.Implementations.Net diff --git a/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs b/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs index 4da9c08d0a..447cbf4034 100644 --- a/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs +++ b/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace System.Net { @@ -7,7 +7,7 @@ namespace System.Net using System.Text; /// - /// Extension methods to convert + /// Extension methods to convert /// instances to hexadecimal, octal, and binary strings. /// public static class BigIntegerExtensions @@ -17,7 +17,7 @@ namespace System.Net /// /// A . /// - /// A containing a binary + /// A containing a binary /// representation of the supplied . /// public static string ToBinaryString(this BigInteger bigint) @@ -54,7 +54,7 @@ namespace System.Net /// /// A . /// - /// A containing a hexadecimal + /// A containing a hexadecimal /// representation of the supplied . /// public static string ToHexadecimalString(this BigInteger bigint) @@ -67,7 +67,7 @@ namespace System.Net /// /// A . /// - /// A containing an octal + /// A containing an octal /// representation of the supplied . /// public static string ToOctalString(this BigInteger bigint) @@ -165,4 +165,4 @@ namespace System.Net } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs index 7fe6a8d3d0..c5853135cd 100644 --- a/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs +++ b/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Numerics; @@ -30,7 +30,7 @@ namespace System.Net throw new ArgumentOutOfRangeException(nameof(i)); } byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128; - IPNetworkCollection ipn = this._ipnetwork.Subnet(width); + var ipn = this._ipnetwork.Subnet(width); return ipn[i].Network; } } @@ -89,4 +89,4 @@ namespace System.Net #endregion } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs index 9a0020de77..16f39daf7c 100644 --- a/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs +++ b/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Net.Sockets; using System.Numerics; @@ -33,7 +33,7 @@ namespace System.Net { get { - BigInteger uintNetwork = this._ipaddress & this._netmask; + var uintNetwork = this._ipaddress & this._netmask; return uintNetwork; } } @@ -61,7 +61,7 @@ namespace System.Net { int width = this._family == Sockets.AddressFamily.InterNetwork ? 4 : 16; - BigInteger uintBroadcast = this._network + this._netmask.PositiveReverse(width); + var uintBroadcast = this._network + this._netmask.PositiveReverse(width); return uintBroadcast; } } @@ -88,7 +88,7 @@ namespace System.Net { get { - BigInteger fisrt = this._family == Sockets.AddressFamily.InterNetworkV6 + var fisrt = this._family == Sockets.AddressFamily.InterNetworkV6 ? this._network : (this.Usable <= 0) ? this._network : this._network + 1; return IPNetwork.ToIPAddress(fisrt, this._family); @@ -102,7 +102,7 @@ namespace System.Net { get { - BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6 + var last = this._family == Sockets.AddressFamily.InterNetworkV6 ? this._broadcast : (this.Usable <= 0) ? this._network : this._broadcast - 1; return IPNetwork.ToIPAddress(last, this._family); @@ -122,8 +122,8 @@ namespace System.Net return this.Total; } byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 }; - BigInteger bmask = new BigInteger(mask); - BigInteger usableIps = (_cidr > 30) ? 0 : ((bmask >> _cidr) - 1); + var bmask = new BigInteger(mask); + var usableIps = (_cidr > 30) ? 0 : ((bmask >> _cidr) - 1); return usableIps; } } @@ -137,7 +137,7 @@ namespace System.Net { int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128; - BigInteger count = BigInteger.Pow(2, (max - _cidr)); + var count = BigInteger.Pow(2, (max - _cidr)); return count; } } @@ -523,9 +523,8 @@ namespace System.Net return; } - BigInteger uintIpAddress = IPNetwork.ToBigInteger(ipaddress); - byte? cidr2 = null; - bool parsed = IPNetwork.TryToCidr(netmask, out cidr2); + var uintIpAddress = IPNetwork.ToBigInteger(ipaddress); + bool parsed = IPNetwork.TryToCidr(netmask, out var cidr2); if (parsed == false) { if (tryParse == false) @@ -537,7 +536,7 @@ namespace System.Net } byte cidr = (byte)cidr2; - IPNetwork ipnet = new IPNetwork(uintIpAddress, ipaddress.AddressFamily, cidr); + var ipnet = new IPNetwork(uintIpAddress, ipaddress.AddressFamily, cidr); ipnetwork = ipnet; return; @@ -615,8 +614,7 @@ namespace System.Net /// public static BigInteger ToBigInteger(IPAddress ipaddress) { - BigInteger? uintIpAddress = null; - IPNetwork.InternalToBigInteger(false, ipaddress, out uintIpAddress); + IPNetwork.InternalToBigInteger(false, ipaddress, out var uintIpAddress); return (BigInteger)uintIpAddress; } @@ -630,8 +628,7 @@ namespace System.Net /// public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress) { - BigInteger? uintIpAddress2 = null; - IPNetwork.InternalToBigInteger(true, ipaddress, out uintIpAddress2); + IPNetwork.InternalToBigInteger(true, ipaddress, out var uintIpAddress2); bool parsed = (uintIpAddress2 != null); uintIpAddress = uintIpAddress2; return parsed; @@ -681,9 +678,7 @@ namespace System.Net /// public static BigInteger ToUint(byte cidr, AddressFamily family) { - - BigInteger? uintNetmask = null; - IPNetwork.InternalToBigInteger(false, cidr, family, out uintNetmask); + IPNetwork.InternalToBigInteger(false, cidr, family, out var uintNetmask); return (BigInteger)uintNetmask; } @@ -695,9 +690,7 @@ namespace System.Net /// public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask) { - - BigInteger? uintNetmask2 = null; - IPNetwork.InternalToBigInteger(true, cidr, family, out uintNetmask2); + IPNetwork.InternalToBigInteger(true, cidr, family, out var uintNetmask2); bool parsed = (uintNetmask2 != null); uintNetmask = uintNetmask2; return parsed; @@ -754,7 +747,7 @@ namespace System.Net return; } - BigInteger mask = new BigInteger(new byte[] { + var mask = new BigInteger(new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -762,7 +755,7 @@ namespace System.Net 0x00 }); - BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr); + var masked = cidr == 0 ? 0 : mask << (128 - cidr); byte[] m = masked.ToByteArray(); byte[] bmask = new byte[17]; int copy = m.Length > 16 ? 16 : m.Length; @@ -812,8 +805,7 @@ namespace System.Net /// public static byte ToCidr(IPAddress netmask) { - byte? cidr = null; - IPNetwork.InternalToCidr(false, netmask, out cidr); + IPNetwork.InternalToCidr(false, netmask, out var cidr); return (byte)cidr; } @@ -827,8 +819,7 @@ namespace System.Net /// public static bool TryToCidr(IPAddress netmask, out byte? cidr) { - byte? cidr2 = null; - IPNetwork.InternalToCidr(true, netmask, out cidr2); + IPNetwork.InternalToCidr(true, netmask, out var cidr2); bool parsed = (cidr2 != null); cidr = cidr2; return parsed; @@ -846,8 +837,8 @@ namespace System.Net cidr = null; return; } - BigInteger? uintNetmask2 = null; - bool parsed = IPNetwork.TryToBigInteger(netmask, out uintNetmask2); + + bool parsed = IPNetwork.TryToBigInteger(netmask, out var uintNetmask2); /// 20180217 lduchosal /// impossible to reach code. @@ -858,10 +849,9 @@ namespace System.Net /// cidr = null; /// return; /// } - BigInteger uintNetmask = (BigInteger)uintNetmask2; + var uintNetmask = (BigInteger)uintNetmask2; - byte? cidr2 = null; - IPNetwork.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out cidr2); + IPNetwork.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out var cidr2); cidr = cidr2; return; @@ -951,8 +941,8 @@ namespace System.Net return; } - BigInteger mask = IPNetwork.ToUint(cidr, family); - IPAddress netmask2 = IPNetwork.ToIPAddress(mask, family); + var mask = IPNetwork.ToUint(cidr, family); + var netmask2 = IPNetwork.ToIPAddress(mask, family); netmask = netmask2; return; @@ -990,7 +980,7 @@ namespace System.Net /// public static uint BitsSet(IPAddress netmask) { - BigInteger uintNetmask = IPNetwork.ToBigInteger(netmask); + var uintNetmask = IPNetwork.ToBigInteger(netmask); uint bits = IPNetwork.BitsSet(uintNetmask, netmask.AddressFamily); return bits; } @@ -1013,7 +1003,7 @@ namespace System.Net { throw new ArgumentNullException(nameof(netmask)); } - BigInteger uintNetmask = IPNetwork.ToBigInteger(netmask); + var uintNetmask = IPNetwork.ToBigInteger(netmask); bool valid = IPNetwork.InternalValidNetmask(uintNetmask, netmask.AddressFamily); return valid; } @@ -1042,7 +1032,7 @@ namespace System.Net 0x00 }); - BigInteger neg = ((~netmask) & (mask)); + var neg = ((~netmask) & (mask)); bool isNetmask = ((neg + 1) & neg) == 0; return isNetmask; @@ -1068,7 +1058,7 @@ namespace System.Net Array.Reverse(bytes2); byte[] sized = Resize(bytes2, family); - IPAddress ip = new IPAddress(sized); + var ip = new IPAddress(sized); return ip; } @@ -1122,9 +1112,9 @@ namespace System.Net return false; } - BigInteger uintNetwork = _network; - BigInteger uintBroadcast = _broadcast; - BigInteger uintAddress = IPNetwork.ToBigInteger(ipaddress); + var uintNetwork = _network; + var uintBroadcast = _broadcast; + var uintAddress = IPNetwork.ToBigInteger(ipaddress); bool contains = (uintAddress >= uintNetwork && uintAddress <= uintBroadcast); @@ -1146,11 +1136,11 @@ namespace System.Net throw new ArgumentNullException(nameof(network2)); } - BigInteger uintNetwork = _network; - BigInteger uintBroadcast = _broadcast; + var uintNetwork = _network; + var uintBroadcast = _broadcast; - BigInteger uintFirst = network2._network; - BigInteger uintLast = network2._broadcast; + var uintFirst = network2._network; + var uintLast = network2._broadcast; bool contains = (uintFirst >= uintNetwork && uintLast <= uintBroadcast); @@ -1175,11 +1165,11 @@ namespace System.Net throw new ArgumentNullException(nameof(network2)); } - BigInteger uintNetwork = _network; - BigInteger uintBroadcast = _broadcast; + var uintNetwork = _network; + var uintBroadcast = _broadcast; - BigInteger uintFirst = network2._network; - BigInteger uintLast = network2._broadcast; + var uintFirst = network2._network; + var uintLast = network2._broadcast; bool overlap = (uintFirst >= uintNetwork && uintFirst <= uintBroadcast) @@ -1428,8 +1418,8 @@ namespace System.Net return; } - IPNetwork first = (network1._network < network2._network) ? network1 : network2; - IPNetwork last = (network1._network > network2._network) ? network1 : network2; + var first = (network1._network < network2._network) ? network1 : network2; + var last = (network1._network > network2._network) ? network1 : network2; /// Starting from here : /// network1 and network2 have the same cidr, @@ -1449,10 +1439,10 @@ namespace System.Net return; } - BigInteger uintSupernet = first._network; + var uintSupernet = first._network; byte cidrSupernet = (byte)(first._cidr - 1); - IPNetwork networkSupernet = new IPNetwork(uintSupernet, first._family, cidrSupernet); + var networkSupernet = new IPNetwork(uintSupernet, first._family, cidrSupernet); if (networkSupernet._network != first._network) { if (trySupernet == false) @@ -1491,8 +1481,7 @@ namespace System.Net /// public static IPNetwork[] Supernet(IPNetwork[] ipnetworks) { - IPNetwork[] supernet; - InternalSupernet(false, ipnetworks, out supernet); + InternalSupernet(false, ipnetworks, out var supernet); return supernet; } @@ -1535,9 +1524,9 @@ namespace System.Net return true; } - List supernetted = new List(); - List ipns = IPNetwork.Array2List(ipnetworks); - Stack current = IPNetwork.List2Stack(ipns); + var supernetted = new List(); + var ipns = IPNetwork.Array2List(ipnetworks); + var current = IPNetwork.List2Stack(ipns); int previousCount = 0; int currentCount = current.Count; @@ -1547,8 +1536,8 @@ namespace System.Net supernetted.Clear(); while (current.Count > 1) { - IPNetwork ipn1 = current.Pop(); - IPNetwork ipn2 = current.Peek(); + var ipn1 = current.Pop(); + var ipn2 = current.Peek(); IPNetwork outNetwork = null; bool success = ipn1.TrySupernet(ipn2, out outNetwork); @@ -1578,7 +1567,7 @@ namespace System.Net private static Stack List2Stack(List list) { - Stack stack = new Stack(); + var stack = new Stack(); list.ForEach(new Action( delegate (IPNetwork ipn) { @@ -1590,7 +1579,7 @@ namespace System.Net private static List Array2List(IPNetwork[] array) { - List ipns = new List(); + var ipns = new List(); ipns.AddRange(array); IPNetwork.RemoveNull(ipns); ipns.Sort(new Comparison( @@ -1642,14 +1631,12 @@ namespace System.Net throw new ArgumentNullException(nameof(end)); } - IPAddress startIP; - if (!IPAddress.TryParse(start, out startIP)) + if (!IPAddress.TryParse(start, out var startIP)) { throw new ArgumentException("start"); } - IPAddress endIP; - if (!IPAddress.TryParse(end, out endIP)) + if (!IPAddress.TryParse(end, out var endIP)) { throw new ArgumentException("end"); } @@ -1659,10 +1646,10 @@ namespace System.Net throw new NotSupportedException("MixedAddressFamily"); } - IPNetwork ipnetwork = new IPNetwork(0, startIP.AddressFamily, 0); + var ipnetwork = new IPNetwork(0, startIP.AddressFamily, 0); for (byte cidr = 32; cidr >= 0; cidr--) { - IPNetwork wideSubnet = IPNetwork.Parse(start, cidr); + var wideSubnet = IPNetwork.Parse(start, cidr); if (wideSubnet.Contains(endIP)) { ipnetwork = wideSubnet; @@ -1707,8 +1694,9 @@ namespace System.Net } - IPNetwork[] nnin = Array.FindAll(ipnetworks, new Predicate( - delegate (IPNetwork ipnet) { + IPNetwork[] nnin = Array.FindAll(ipnetworks, new Predicate( + delegate (IPNetwork ipnet) + { return ipnet != null; } )); @@ -1725,19 +1713,19 @@ namespace System.Net if (nnin.Length == 1) { - IPNetwork ipn0 = nnin[0]; + var ipn0 = nnin[0]; ipnetwork = ipn0; return; } - Array.Sort(nnin); - IPNetwork nnin0 = nnin[0]; - BigInteger uintNnin0 = nnin0._ipaddress; + Array.Sort(nnin); + var nnin0 = nnin[0]; + var uintNnin0 = nnin0._ipaddress; - IPNetwork nninX = nnin[nnin.Length - 1]; - IPAddress ipaddressX = nninX.Broadcast; + var nninX = nnin[nnin.Length - 1]; + var ipaddressX = nninX.Broadcast; - AddressFamily family = ipnetworks[0]._family; + var family = ipnetworks[0]._family; foreach (var ipnx in ipnetworks) { if (ipnx._family != family) @@ -1746,10 +1734,10 @@ namespace System.Net } } - IPNetwork ipn = new IPNetwork(0, family, 0); + var ipn = new IPNetwork(0, family, 0); for (byte cidr = nnin0._cidr; cidr >= 0; cidr--) { - IPNetwork wideSubnet = new IPNetwork(uintNnin0, family, cidr); + var wideSubnet = new IPNetwork(uintNnin0, family, cidr); if (wideSubnet.Contains(ipaddressX)) { ipn = wideSubnet; @@ -1772,7 +1760,7 @@ namespace System.Net public string Print() { - StringWriter sw = new StringWriter(); + var sw = new StringWriter(); sw.WriteLine("IPNetwork : {0}", ToString()); sw.WriteLine("Network : {0}", Network); @@ -1818,7 +1806,7 @@ namespace System.Net cidr = 64; return true; } - BigInteger uintIPAddress = IPNetwork.ToBigInteger(ipaddress); + var uintIPAddress = IPNetwork.ToBigInteger(ipaddress); uintIPAddress = uintIPAddress >> 29; if (uintIPAddress <= 3) { diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs index 48d404124a..7d3106624a 100644 --- a/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs +++ b/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs @@ -1,4 +1,4 @@ -using System.Collections; +using System.Collections; using System.Collections.Generic; using System.Numerics; @@ -47,7 +47,7 @@ namespace System.Net { get { - BigInteger count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); + var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr); return count; } } @@ -61,11 +61,11 @@ namespace System.Net throw new ArgumentOutOfRangeException(nameof(i)); } - BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 + var last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6 ? this._lastUsable : this._broadcast; - BigInteger increment = (last - this._network) / this.Count; - BigInteger uintNetwork = this._network + ((increment + 1) * i); - IPNetwork ipn = new IPNetwork(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); + var increment = (last - this._network) / this.Count; + var uintNetwork = this._network + ((increment + 1) * i); + var ipn = new IPNetwork(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet); return ipn; } } @@ -125,4 +125,4 @@ namespace System.Net #endregion } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index dbf89d7e10..b486c0ef71 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -9,10 +9,9 @@ using System.Threading.Tasks; using MediaBrowser.Common.Net; using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.System; -using System.Numerics; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Networking { @@ -204,20 +203,18 @@ namespace Emby.Server.Implementations.Networking private Dictionary> _subnetLookup = new Dictionary>(StringComparer.Ordinal); private List GetSubnets(string endpointFirstPart) { - List subnets; - lock (_subnetLookup) { - if (_subnetLookup.TryGetValue(endpointFirstPart, out subnets)) + if (_subnetLookup.TryGetValue(endpointFirstPart, out var subnets)) { return subnets; } subnets = new List(); - foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) + foreach (var adapter in NetworkInterface.GetAllNetworkInterfaces()) { - foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) + foreach (var unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) { if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0]) { @@ -299,8 +296,7 @@ namespace Emby.Server.Implementations.Networking throw new ArgumentNullException(nameof(endpoint)); } - IPAddress address; - if (IPAddress.TryParse(endpoint, out address)) + if (IPAddress.TryParse(endpoint, out var address)) { var addressString = address.ToString(); @@ -349,8 +345,7 @@ namespace Emby.Server.Implementations.Networking } else if (resolveHost) { - Uri uri; - if (Uri.TryCreate(endpoint, UriKind.RelativeOrAbsolute, out uri)) + if (Uri.TryCreate(endpoint, UriKind.RelativeOrAbsolute, out var uri)) { try { @@ -462,7 +457,7 @@ namespace Emby.Server.Implementations.Networking public int GetRandomUnusedUdpPort() { - IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 0); + var localEndPoint = new IPEndPoint(IPAddress.Any, 0); using (var udpClient = new UdpClient(localEndPoint)) { var port = ((IPEndPoint)(udpClient.Client.LocalEndPoint)).Port; @@ -523,8 +518,8 @@ namespace Emby.Server.Implementations.Networking /// The endpointstring. /// The defaultport. /// IPEndPoint. - /// Endpoint descriptor may not be empty. - /// + /// Endpoint descriptor may not be empty. + /// private static async Task Parse(string endpointstring, int defaultport) { if (string.IsNullOrEmpty(endpointstring) @@ -586,12 +581,10 @@ namespace Emby.Server.Implementations.Networking /// /// The p. /// System.Int32. - /// + /// private static int GetPort(string p) { - int port; - - if (!int.TryParse(p, out port) + if (!int.TryParse(p, out var port) || port < IPEndPoint.MinPort || port > IPEndPoint.MaxPort) { @@ -606,7 +599,7 @@ namespace Emby.Server.Implementations.Networking /// /// The p. /// IPAddress. - /// + /// private static async Task GetIPfromHost(string p) { var hosts = await Dns.GetHostAddressesAsync(p).ConfigureAwait(false); @@ -619,8 +612,7 @@ namespace Emby.Server.Implementations.Networking public IpAddressInfo ParseIpAddress(string ipAddress) { - IpAddressInfo info; - if (TryParseIpAddress(ipAddress, out info)) + if (TryParseIpAddress(ipAddress, out var info)) { return info; } @@ -630,8 +622,7 @@ namespace Emby.Server.Implementations.Networking public bool TryParseIpAddress(string ipAddress, out IpAddressInfo ipAddressInfo) { - IPAddress address; - if (IPAddress.TryParse(ipAddress, out address)) + if (IPAddress.TryParse(ipAddress, out var address)) { ipAddressInfo = ToIpAddressInfo(address); return true; diff --git a/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs index f2bc4c07dd..f4decc856e 100644 --- a/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs +++ b/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Playlists; diff --git a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs index e69b4a34e3..2231531647 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs @@ -1,23 +1,20 @@ -using System; +using System; +using System.Collections.Generic; +using System.Linq; +using Emby.Server.Implementations.Images; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Emby.Server.Implementations.Images; - -using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Library; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.Playlists diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs index 38fbac0309..c39897b53e 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs @@ -1,11 +1,3 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Playlists; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Playlists; using System; using System.Collections.Generic; using System.IO; @@ -13,12 +5,17 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; -using MediaBrowser.Model.Extensions; -using PlaylistsNET; +using MediaBrowser.Model.Playlists; +using Microsoft.Extensions.Logging; using PlaylistsNET.Content; using PlaylistsNET.Models; -using PlaylistsNET.Utils; namespace Emby.Server.Implementations.Playlists { @@ -472,12 +469,12 @@ namespace Emby.Server.Implementations.Playlists folderPath = folderPath + Path.DirectorySeparatorChar; } - Uri folderUri = new Uri(folderPath); - Uri fileAbsoluteUri = new Uri(fileAbsolutePath); + var folderUri = new Uri(folderPath); + var fileAbsoluteUri = new Uri(fileAbsolutePath); if (folderUri.Scheme != fileAbsoluteUri.Scheme) { return fileAbsolutePath; } // path can't be made relative. - Uri relativeUri = folderUri.MakeRelativeUri(fileAbsoluteUri); + var relativeUri = folderUri.MakeRelativeUri(fileAbsoluteUri); string relativePath = Uri.UnescapeDataString(relativeUri.ToString()); if (fileAbsoluteUri.Scheme.Equals("file", StringComparison.CurrentCultureIgnoreCase)) diff --git a/Emby.Server.Implementations/Reflection/AssemblyInfo.cs b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs index c3ce97d40e..9d16fe43f6 100644 --- a/Emby.Server.Implementations/Reflection/AssemblyInfo.cs +++ b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Reflection; using MediaBrowser.Model.Reflection; diff --git a/Emby.Server.Implementations/ResourceFileManager.cs b/Emby.Server.Implementations/ResourceFileManager.cs index 04cf0632c3..f54e3205ae 100644 --- a/Emby.Server.Implementations/ResourceFileManager.cs +++ b/Emby.Server.Implementations/ResourceFileManager.cs @@ -1,23 +1,11 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Serialization; using System; -using System.Collections.Generic; using System.IO; -using System.Linq; using System.Threading.Tasks; -using MediaBrowser.Common.Plugins; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.IO; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.Plugins; -using MediaBrowser.Model.Reflection; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations { diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 904e93c56c..0ae7ae96cf 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -1,22 +1,20 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Controller.Persistence; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.IO; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Tasks; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Providers; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs index afcee02e5f..98685cebea 100644 --- a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Globalization; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs index 5f6a0dfe66..3a34da3af2 100644 --- a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Linq; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs index 366ad889cc..68031170fd 100644 --- a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.ScheduledTasks diff --git a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs index bd49277ad9..f6fa64d136 100644 --- a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Library; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Emby.Server.Implementations.Library; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.ScheduledTasks diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index ec54ce71a5..44f6e2d7b3 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -9,10 +9,10 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Progress; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { @@ -63,7 +63,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// The task manager. /// The json serializer. /// The logger. - /// + /// /// scheduledTask /// or /// applicationPaths @@ -256,7 +256,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the triggers that define when the task will run /// /// The triggers. - /// value + /// value public TaskTriggerInfo[] Triggers { get @@ -365,7 +365,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// /// Task options. /// Task. - /// Cannot execute a Task that is already running + /// Cannot execute a Task that is already running public async Task Execute(TaskOptions options) { var task = Task.Run(async () => await ExecuteInternal(options).ConfigureAwait(false)); @@ -461,7 +461,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// /// Stops the task if it is currently executing /// - /// Cannot cancel a Task unless it is in the Running state. + /// Cannot cancel a Task unless it is in the Running state. public void Cancel() { if (State != TaskState.Running) @@ -705,8 +705,8 @@ namespace Emby.Server.Implementations.ScheduledTasks /// /// The info. /// BaseTaskTrigger. - /// - /// Invalid trigger type: + info.Type + /// + /// Invalid trigger type: + info.Type private ITaskTrigger GetTrigger(TaskTriggerInfo info) { var options = new TaskOptions @@ -718,7 +718,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (!info.TimeOfDayTicks.HasValue) { - throw new ArgumentException("Info did not contain a TimeOfDayTicks.",nameof(info)); + throw new ArgumentException("Info did not contain a TimeOfDayTicks.", nameof(info)); } return new DailyTrigger diff --git a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs index 35366a044c..08ff4f55f7 100644 --- a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs @@ -1,8 +1,7 @@ -using System; +using System; using System.Threading.Tasks; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs index def142f88a..7a88fc2b01 100644 --- a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Threading.Tasks; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs index 361c31acb0..09c348e240 100644 --- a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs +++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; @@ -7,10 +7,10 @@ using System.Threading.Tasks; using MediaBrowser.Common.Configuration; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { @@ -61,7 +61,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// The application paths. /// The json serializer. /// The logger. - /// kernel + /// kernel public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem, ISystemEvents systemEvents) { ApplicationPaths = applicationPaths; @@ -94,7 +94,7 @@ namespace Emby.Server.Implementations.ScheduledTasks try { - lines = _fileSystem.ReadAllLines(path).ToList() ; + lines = _fileSystem.ReadAllLines(path).ToList(); } catch { @@ -364,8 +364,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { var list = new List>(); - Tuple item; - while (_taskQueue.TryDequeue(out item)) + while (_taskQueue.TryDequeue(out var item)) { if (list.All(i => i.Item1 != item.Item1)) { diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs index 0716f8d308..2590f455c6 100644 --- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -6,8 +6,8 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Configuration; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks.Tasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs index fea18d9f0b..a57fe49457 100644 --- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks foreach (var file in filesToDelete) { - double percent = index / (double) filesToDelete.Count; + double percent = index / (double)filesToDelete.Count; progress.Report(100 * percent); diff --git a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs index e694e08558..2a6a7b13cd 100644 --- a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs @@ -1,8 +1,7 @@ -using System; +using System; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/Security/AuthenticationRepository.cs b/Emby.Server.Implementations/Security/AuthenticationRepository.cs index 2a6406f256..e0f174f9d4 100644 --- a/Emby.Server.Implementations/Security/AuthenticationRepository.cs +++ b/Emby.Server.Implementations/Security/AuthenticationRepository.cs @@ -3,16 +3,13 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; -using System.Threading; using Emby.Server.Implementations.Data; -using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Security; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.Devices; using MediaBrowser.Model.Querying; +using Microsoft.Extensions.Logging; using SQLitePCL.pretty; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Model.Devices; namespace Emby.Server.Implementations.Security { diff --git a/Emby.Server.Implementations/Security/EncryptionManager.cs b/Emby.Server.Implementations/Security/EncryptionManager.cs index b99e00a673..fa8872ccc3 100644 --- a/Emby.Server.Implementations/Security/EncryptionManager.cs +++ b/Emby.Server.Implementations/Security/EncryptionManager.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Controller.Security; using System; using System.Text; +using MediaBrowser.Controller.Security; namespace Emby.Server.Implementations.Security { @@ -11,7 +11,7 @@ namespace Emby.Server.Implementations.Security /// /// The value. /// System.String. - /// value + /// value public string EncryptString(string value) { if (value == null) @@ -27,7 +27,7 @@ namespace Emby.Server.Implementations.Security /// /// The value. /// System.String. - /// value + /// value public string DecryptString(string value) { if (value == null) diff --git a/Emby.Server.Implementations/Serialization/JsonSerializer.cs b/Emby.Server.Implementations/Serialization/JsonSerializer.cs index d4b6b2f43b..60bf2d5a9d 100644 --- a/Emby.Server.Implementations/Serialization/JsonSerializer.cs +++ b/Emby.Server.Implementations/Serialization/JsonSerializer.cs @@ -1,9 +1,9 @@ using System; using System.IO; +using System.Threading.Tasks; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Common.Implementations.Serialization { @@ -27,7 +27,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The obj. /// The stream. - /// obj + /// obj public void SerializeToStream(object obj, Stream stream) { if (obj == null) @@ -48,7 +48,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The obj. /// The file. - /// obj + /// obj public void SerializeToFile(object obj, string file) { if (obj == null) @@ -61,7 +61,7 @@ namespace Emby.Common.Implementations.Serialization throw new ArgumentNullException(nameof(file)); } - using (Stream stream = _fileSystem.GetFileStream(file, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read)) + using (var stream = _fileSystem.GetFileStream(file, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read)) { SerializeToStream(obj, stream); } @@ -79,7 +79,7 @@ namespace Emby.Common.Implementations.Serialization /// The type. /// The file. /// System.Object. - /// type + /// type public object DeserializeFromFile(Type type, string file) { if (type == null) @@ -92,7 +92,7 @@ namespace Emby.Common.Implementations.Serialization throw new ArgumentNullException(nameof(file)); } - using (Stream stream = OpenFile(file)) + using (var stream = OpenFile(file)) { return DeserializeFromStream(stream, type); } @@ -104,7 +104,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The file. /// ``0. - /// file + /// file public T DeserializeFromFile(string file) where T : class { @@ -113,7 +113,7 @@ namespace Emby.Common.Implementations.Serialization throw new ArgumentNullException(nameof(file)); } - using (Stream stream = OpenFile(file)) + using (var stream = OpenFile(file)) { return DeserializeFromStream(stream); } @@ -125,7 +125,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The stream. /// ``0. - /// stream + /// stream public T DeserializeFromStream(Stream stream) { if (stream == null) @@ -153,7 +153,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The text. /// ``0. - /// text + /// text public T DeserializeFromString(string text) { if (string.IsNullOrEmpty(text)) @@ -170,7 +170,7 @@ namespace Emby.Common.Implementations.Serialization /// The stream. /// The type. /// System.Object. - /// stream + /// stream public object DeserializeFromStream(Stream stream, Type type) { if (stream == null) @@ -236,7 +236,7 @@ namespace Emby.Common.Implementations.Serialization /// The json. /// The type. /// System.Object. - /// json + /// json public object DeserializeFromString(string json, Type type) { if (string.IsNullOrEmpty(json)) @@ -257,7 +257,7 @@ namespace Emby.Common.Implementations.Serialization /// /// The obj. /// System.String. - /// obj + /// obj public string SerializeToString(object obj) { if (obj == null) diff --git a/Emby.Server.Implementations/Serialization/XmlSerializer.cs b/Emby.Server.Implementations/Serialization/XmlSerializer.cs index dfc3249198..22d6712ec2 100644 --- a/Emby.Server.Implementations/Serialization/XmlSerializer.cs +++ b/Emby.Server.Implementations/Serialization/XmlSerializer.cs @@ -1,11 +1,11 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Xml; using System.Xml.Serialization; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Serialization { @@ -33,8 +33,7 @@ namespace Emby.Server.Implementations.Serialization var key = type.FullName; lock (_serializers) { - XmlSerializer serializer; - if (!_serializers.TryGetValue(key, out serializer)) + if (!_serializers.TryGetValue(key, out var serializer)) { serializer = new XmlSerializer(type); _serializers[key] = serializer; diff --git a/Emby.Server.Implementations/ServerApplicationPaths.cs b/Emby.Server.Implementations/ServerApplicationPaths.cs index 933b672915..edea10a074 100644 --- a/Emby.Server.Implementations/ServerApplicationPaths.cs +++ b/Emby.Server.Implementations/ServerApplicationPaths.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using Emby.Server.Implementations.AppBase; using MediaBrowser.Controller; diff --git a/Emby.Server.Implementations/Services/RequestHelper.cs b/Emby.Server.Implementations/Services/RequestHelper.cs index 7d2fbc3e04..24e9cbfa4d 100644 --- a/Emby.Server.Implementations/Services/RequestHelper.cs +++ b/Emby.Server.Implementations/Services/RequestHelper.cs @@ -1,7 +1,7 @@ using System; using System.IO; -using Emby.Server.Implementations.HttpServer; using System.Threading.Tasks; +using Emby.Server.Implementations.HttpServer; namespace Emby.Server.Implementations.Services { diff --git a/Emby.Server.Implementations/Services/ServiceController.cs b/Emby.Server.Implementations/Services/ServiceController.cs index 46af831288..5796956d87 100644 --- a/Emby.Server.Implementations/Services/ServiceController.cs +++ b/Emby.Server.Implementations/Services/ServiceController.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; using Emby.Server.Implementations.HttpServer; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Services; namespace Emby.Server.Implementations.Services @@ -73,7 +72,7 @@ namespace Emby.Server.Implementations.Services public void RegisterRestPaths(HttpListenerHost appHost, Type requestType, Type serviceType) { var attrs = appHost.GetRouteAttributes(requestType); - foreach (RouteAttribute attr in attrs) + foreach (var attr in attrs) { var restPath = new RestPath(appHost.CreateInstance, appHost.GetParseFn, requestType, serviceType, attr.Path, attr.Verbs, attr.IsHidden, attr.Summary, attr.Description); @@ -90,8 +89,7 @@ namespace Emby.Server.Implementations.Services if (restPath.Path.IndexOfAny(InvalidRouteChars) != -1) throw new ArgumentException(string.Format("Route '{0}' on '{1}' contains invalid chars. ", restPath.Path, restPath.RequestType.GetMethodName())); - List pathsAtFirstMatch; - if (!RestPathMap.TryGetValue(restPath.FirstMatchHashKey, out pathsAtFirstMatch)) + if (!RestPathMap.TryGetValue(restPath.FirstMatchHashKey, out List pathsAtFirstMatch)) { pathsAtFirstMatch = new List(); RestPathMap[restPath.FirstMatchHashKey] = pathsAtFirstMatch; diff --git a/Emby.Server.Implementations/Services/ServiceExec.cs b/Emby.Server.Implementations/Services/ServiceExec.cs index 9516c1e389..45c918fa1b 100644 --- a/Emby.Server.Implementations/Services/ServiceExec.cs +++ b/Emby.Server.Implementations/Services/ServiceExec.cs @@ -5,7 +5,6 @@ using System.Linq.Expressions; using System.Reflection; using System.Threading.Tasks; using MediaBrowser.Model.Services; -using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Services { @@ -74,8 +73,7 @@ namespace Emby.Server.Implementations.Services { var actionName = request.Verb ?? "POST"; - ServiceMethod actionContext; - if (ServiceExecGeneral.execMap.TryGetValue(ServiceMethod.Key(serviceType, actionName, requestName), out actionContext)) + if (execMap.TryGetValue(ServiceMethod.Key(serviceType, actionName, requestName), out ServiceMethod actionContext)) { if (actionContext.RequestFilters != null) { diff --git a/Emby.Server.Implementations/Services/ServiceHandler.cs b/Emby.Server.Implementations/Services/ServiceHandler.cs index 5590c51b62..7e836e22c3 100644 --- a/Emby.Server.Implementations/Services/ServiceHandler.cs +++ b/Emby.Server.Implementations/Services/ServiceHandler.cs @@ -4,8 +4,8 @@ using System.Reflection; using System.Threading; using System.Threading.Tasks; using Emby.Server.Implementations.HttpServer; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Services { @@ -62,8 +62,7 @@ namespace Emby.Server.Implementations.Services { if (this.RestPath == null) { - string contentType; - this.RestPath = FindMatchingRestPath(httpMethod, pathInfo, out contentType); + this.RestPath = FindMatchingRestPath(httpMethod, pathInfo, out string contentType); if (contentType != null) ResponseContentType = contentType; @@ -137,9 +136,8 @@ namespace Emby.Server.Implementations.Services public static object CreateRequest(IRequest httpReq, RestPath restPath, Dictionary requestParams, object requestDto) { - string contentType; var pathInfo = !restPath.IsWildCardPath - ? GetSanitizedPathInfo(httpReq.PathInfo, out contentType) + ? GetSanitizedPathInfo(httpReq.PathInfo, out string contentType) : httpReq.PathInfo; return restPath.CreateRequest(pathInfo, requestParams, requestDto); @@ -239,8 +237,7 @@ namespace Emby.Server.Implementations.Services private static RestPath GetRoute(IRequest req) { - object route; - req.Items.TryGetValue("__route", out route); + req.Items.TryGetValue("__route", out var route); return route as RestPath; } } diff --git a/Emby.Server.Implementations/Services/ServiceMethod.cs b/Emby.Server.Implementations/Services/ServiceMethod.cs index fa2dd43d06..7add728151 100644 --- a/Emby.Server.Implementations/Services/ServiceMethod.cs +++ b/Emby.Server.Implementations/Services/ServiceMethod.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Server.Implementations.Services { @@ -14,4 +14,4 @@ namespace Emby.Server.Implementations.Services return serviceType.FullName + " " + method.ToUpper() + " " + requestDtoName; } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Services/ServicePath.cs b/Emby.Server.Implementations/Services/ServicePath.cs index 0222b3782c..7e1993b710 100644 --- a/Emby.Server.Implementations/Services/ServicePath.cs +++ b/Emby.Server.Implementations/Services/ServicePath.cs @@ -4,8 +4,6 @@ using System.IO; using System.Linq; using System.Reflection; using System.Text; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Extensions; namespace Emby.Server.Implementations.Services { @@ -308,8 +306,7 @@ namespace Emby.Server.Implementations.Services public int MatchScore(string httpMethod, string[] withPathInfoParts) { - int wildcardMatchCount; - var isMatch = IsMatch(httpMethod, withPathInfoParts, out wildcardMatchCount); + var isMatch = IsMatch(httpMethod, withPathInfoParts, out var wildcardMatchCount); if (!isMatch) { return -1; @@ -486,8 +483,7 @@ namespace Emby.Server.Implementations.Services continue; } - string propertyNameOnRequest; - if (!this.propertyNamesMap.TryGetValue(variableName.ToLower(), out propertyNameOnRequest)) + if (!this.propertyNamesMap.TryGetValue(variableName.ToLower(), out var propertyNameOnRequest)) { if (string.Equals("ignore", variableName, StringComparison.OrdinalIgnoreCase)) { diff --git a/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs b/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs index 2233bf918b..d13935fbab 100644 --- a/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs +++ b/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs @@ -11,14 +11,14 @@ namespace Emby.Server.Implementations.Services { internal class PropertySerializerEntry { - public PropertySerializerEntry(Action propertySetFn, Func propertyParseStringFn) + public PropertySerializerEntry(Action propertySetFn, Func propertyParseStringFn) { PropertySetFn = propertySetFn; PropertyParseStringFn = propertyParseStringFn; } public Action PropertySetFn; - public Func PropertyParseStringFn; + public Func PropertyParseStringFn; public Type PropertyType; } diff --git a/Emby.Server.Implementations/Services/UrlExtensions.cs b/Emby.Server.Implementations/Services/UrlExtensions.cs index 898dcac3e9..8899fbfa32 100644 --- a/Emby.Server.Implementations/Services/UrlExtensions.cs +++ b/Emby.Server.Implementations/Services/UrlExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Emby.Server.Implementations.Services { @@ -30,4 +30,4 @@ namespace Emby.Server.Implementations.Services : strVal.Substring(0, pos); } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Session/HttpSessionController.cs b/Emby.Server.Implementations/Session/HttpSessionController.cs index c61e2aff48..9281f82b39 100644 --- a/Emby.Server.Implementations/Session/HttpSessionController.cs +++ b/Emby.Server.Implementations/Session/HttpSessionController.cs @@ -1,9 +1,3 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Session; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.Session; -using MediaBrowser.Model.System; using System; using System.Collections.Generic; using System.Globalization; @@ -11,6 +5,10 @@ using System.Linq; using System.Net; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Session; namespace Emby.Server.Implementations.Session { @@ -107,7 +105,7 @@ namespace Emby.Server.Implementations.Session return SendMessage(command.Command.ToString(), messageId, args, cancellationToken); } - private string[] _supportedMessages = new string[] { }; + private string[] _supportedMessages = new string[] { }; public Task SendMessage(string name, string messageId, T data, ISessionController[] allControllers, CancellationToken cancellationToken) { if (!IsSessionActive) diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 4e444ac013..e605931989 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -1,13 +1,22 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller; +using MediaBrowser.Controller.Authentication; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Devices; @@ -15,21 +24,11 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; using MediaBrowser.Model.Library; -using Microsoft.Extensions.Logging; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Session; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Controller.Net; -using MediaBrowser.Model.Querying; using MediaBrowser.Model.Threading; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Authentication; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Session { @@ -202,8 +201,8 @@ namespace Emby.Server.Implementations.Session /// The remote end point. /// The user. /// Task. - /// user - /// + /// user + /// public SessionInfo LogSessionActivity(string appName, string appVersion, string deviceId, @@ -266,8 +265,7 @@ namespace Emby.Server.Implementations.Session { var key = GetSessionKey(session.Client, session.DeviceId); - SessionInfo removed; - _activeConnections.TryRemove(key, out removed); + _activeConnections.TryRemove(key, out var removed); OnSessionEnded(session); } @@ -282,8 +280,7 @@ namespace Emby.Server.Implementations.Session { var key = GetSessionKey(session.Client, session.DeviceId); - SessionInfo removed; - _activeConnections.TryRemove(key, out removed); + _activeConnections.TryRemove(key, out var removed); OnSessionEnded(session); } @@ -366,7 +363,7 @@ namespace Emby.Server.Implementations.Session /// Removes the now playing item id. /// /// The session. - /// item + /// item private void RemoveNowPlayingItem(SessionInfo session) { session.NowPlayingItem = null; @@ -405,7 +402,7 @@ namespace Emby.Server.Implementations.Session CheckDisposed(); - SessionInfo sessionInfo = _activeConnections.GetOrAdd(key, k => + var sessionInfo = _activeConnections.GetOrAdd(key, k => { return CreateSession(k, appName, appVersion, deviceId, deviceName, remoteEndPoint, user); }); @@ -572,7 +569,7 @@ namespace Emby.Server.Implementations.Session /// /// The info. /// Task. - /// info + /// info public async Task OnPlaybackStart(PlaybackStartInfo info) { CheckDisposed(); @@ -785,8 +782,8 @@ namespace Emby.Server.Implementations.Session /// /// The info. /// Task. - /// info - /// positionTicks + /// info + /// positionTicks public async Task OnPlaybackStopped(PlaybackStopInfo info) { CheckDisposed(); @@ -798,7 +795,7 @@ namespace Emby.Server.Implementations.Session if (info.PositionTicks.HasValue && info.PositionTicks.Value < 0) { - throw new ArgumentOutOfRangeException(nameof(info),"The PlaybackStopInfo's PositionTicks was negative."); + throw new ArgumentOutOfRangeException(nameof(info), "The PlaybackStopInfo's PositionTicks was negative."); } var session = GetSession(info.SessionId); @@ -1285,8 +1282,8 @@ namespace Emby.Server.Implementations.Session /// /// The session identifier. /// The user identifier. - /// Cannot modify additional users without authenticating first. - /// The requested user is already the primary user of the session. + /// Cannot modify additional users without authenticating first. + /// The requested user is already the primary user of the session. public void AddAdditionalUser(string sessionId, Guid userId) { CheckDisposed(); @@ -1319,8 +1316,8 @@ namespace Emby.Server.Implementations.Session /// /// The session identifier. /// The user identifier. - /// Cannot modify additional users without authenticating first. - /// The requested user is already the primary user of the session. + /// Cannot modify additional users without authenticating first. + /// The requested user is already the primary user of the session. public void RemoveAdditionalUser(string sessionId, Guid userId) { CheckDisposed(); diff --git a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs index 116e455cfa..24903f5e8c 100644 --- a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs @@ -1,15 +1,11 @@ +using System; +using System.Threading.Tasks; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Session; using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.Session; -using System; -using System.Collections.Specialized; -using System.Globalization; -using System.Linq; -using System.Threading.Tasks; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Session { diff --git a/Emby.Server.Implementations/Session/WebSocketController.cs b/Emby.Server.Implementations/Session/WebSocketController.cs index ed34f8721c..0d483c55fa 100644 --- a/Emby.Server.Implementations/Session/WebSocketController.cs +++ b/Emby.Server.Implementations/Session/WebSocketController.cs @@ -1,16 +1,13 @@ -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Session; -using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Session; -using MediaBrowser.Model.System; using System; using System.Collections.Generic; using System.Linq; +using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; -using System.Net.WebSockets; +using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Session; +using MediaBrowser.Model.Net; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Session { diff --git a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs index 1b2974c27c..271188314c 100644 --- a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs +++ b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs @@ -1,8 +1,8 @@ +using System; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs b/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs index df64d816f8..535f123f90 100644 --- a/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs +++ b/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs @@ -1,9 +1,9 @@ +using System; using System.Linq; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/AlbumComparer.cs b/Emby.Server.Implementations/Sorting/AlbumComparer.cs index dda1c54784..3831a0d2d8 100644 --- a/Emby.Server.Implementations/Sorting/AlbumComparer.cs +++ b/Emby.Server.Implementations/Sorting/AlbumComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/AlphanumComparator.cs b/Emby.Server.Implementations/Sorting/AlphanumComparator.cs index 4bfcda1acf..2e00c24d75 100644 --- a/Emby.Server.Implementations/Sorting/AlphanumComparator.cs +++ b/Emby.Server.Implementations/Sorting/AlphanumComparator.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using MediaBrowser.Controller.Sorting; @@ -29,8 +29,8 @@ namespace Emby.Server.Implementations.Sorting char thisCh = s1[thisMarker]; char thatCh = s2[thatMarker]; - StringBuilder thisChunk = new StringBuilder(); - StringBuilder thatChunk = new StringBuilder(); + var thisChunk = new StringBuilder(); + var thatChunk = new StringBuilder(); while ((thisMarker < s1.Length) && (thisChunk.Length == 0 || SortHelper.InChunk(thisCh, thisChunk[0]))) { diff --git a/Emby.Server.Implementations/Sorting/ArtistComparer.cs b/Emby.Server.Implementations/Sorting/ArtistComparer.cs index b0f0549e33..9d5befc9a5 100644 --- a/Emby.Server.Implementations/Sorting/ArtistComparer.cs +++ b/Emby.Server.Implementations/Sorting/ArtistComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs b/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs index 9947591717..87d3ae2d6d 100644 --- a/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs +++ b/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs b/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs index 5c4aeaf861..adb78dec53 100644 --- a/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs +++ b/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs b/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs index 1c51495179..8501bd9ee8 100644 --- a/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs +++ b/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs b/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs index ffe7fbaec1..623675157d 100644 --- a/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs +++ b/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs @@ -1,8 +1,8 @@ +using System; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs index c11c1986cb..73f59f8cd6 100644 --- a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs +++ b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/GameSystemComparer.cs b/Emby.Server.Implementations/Sorting/GameSystemComparer.cs index 0b534b3cb1..2a04bae3c3 100644 --- a/Emby.Server.Implementations/Sorting/GameSystemComparer.cs +++ b/Emby.Server.Implementations/Sorting/GameSystemComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs b/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs index 48e3172ce7..66de05a6a2 100644 --- a/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs +++ b/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; @@ -52,4 +52,4 @@ namespace Emby.Server.Implementations.Sorting /// The user manager. public IUserManager UserManager { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Sorting/IsFolderComparer.cs b/Emby.Server.Implementations/Sorting/IsFolderComparer.cs index 8b6cbb2db1..dfaa144cdc 100644 --- a/Emby.Server.Implementations/Sorting/IsFolderComparer.cs +++ b/Emby.Server.Implementations/Sorting/IsFolderComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs b/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs index 9f4fc2c06d..da3f3dd25b 100644 --- a/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs +++ b/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; @@ -52,4 +52,4 @@ namespace Emby.Server.Implementations.Sorting /// The user manager. public IUserManager UserManager { get; set; } } -} \ No newline at end of file +} diff --git a/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs b/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs index d145aa8dd8..d99d0eff21 100644 --- a/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs +++ b/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/NameComparer.cs b/Emby.Server.Implementations/Sorting/NameComparer.cs index cfd810a6b5..10fa4359aa 100644 --- a/Emby.Server.Implementations/Sorting/NameComparer.cs +++ b/Emby.Server.Implementations/Sorting/NameComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs b/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs index cd48e3048a..e8fa8edc8e 100644 --- a/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs +++ b/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Globalization; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs index b7165ab8c5..eb74ce1bd0 100644 --- a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs +++ b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/PlayersComparer.cs b/Emby.Server.Implementations/Sorting/PlayersComparer.cs index 5b50ea48af..e3652f36b7 100644 --- a/Emby.Server.Implementations/Sorting/PlayersComparer.cs +++ b/Emby.Server.Implementations/Sorting/PlayersComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs index 26c6badaae..0c944a7a02 100644 --- a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs +++ b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs index 0aa5e833b5..472a07eb36 100644 --- a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs +++ b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; diff --git a/Emby.Server.Implementations/Sorting/RandomComparer.cs b/Emby.Server.Implementations/Sorting/RandomComparer.cs index c69ebe41a7..bde8b4534d 100644 --- a/Emby.Server.Implementations/Sorting/RandomComparer.cs +++ b/Emby.Server.Implementations/Sorting/RandomComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/RuntimeComparer.cs b/Emby.Server.Implementations/Sorting/RuntimeComparer.cs index 77851d702b..1d2bdde260 100644 --- a/Emby.Server.Implementations/Sorting/RuntimeComparer.cs +++ b/Emby.Server.Implementations/Sorting/RuntimeComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs b/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs index 1bbe30b955..942e847041 100644 --- a/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs +++ b/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs @@ -1,7 +1,7 @@ +using System; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/SortNameComparer.cs b/Emby.Server.Implementations/Sorting/SortNameComparer.cs index 6c42ed9887..cc0571c782 100644 --- a/Emby.Server.Implementations/Sorting/SortNameComparer.cs +++ b/Emby.Server.Implementations/Sorting/SortNameComparer.cs @@ -1,7 +1,7 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/StartDateComparer.cs b/Emby.Server.Implementations/Sorting/StartDateComparer.cs index 7ae8037d99..aa040fa15e 100644 --- a/Emby.Server.Implementations/Sorting/StartDateComparer.cs +++ b/Emby.Server.Implementations/Sorting/StartDateComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; -using System; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/Sorting/StudioComparer.cs b/Emby.Server.Implementations/Sorting/StudioComparer.cs index 605d65154e..617ed55d52 100644 --- a/Emby.Server.Implementations/Sorting/StudioComparer.cs +++ b/Emby.Server.Implementations/Sorting/StudioComparer.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Sorting; -using MediaBrowser.Model.Querying; using System; using System.Linq; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.Sorting { diff --git a/Emby.Server.Implementations/StartupOptions.cs b/Emby.Server.Implementations/StartupOptions.cs index 2114d85bf8..2212636344 100644 --- a/Emby.Server.Implementations/StartupOptions.cs +++ b/Emby.Server.Implementations/StartupOptions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; namespace Emby.Server.Implementations diff --git a/Emby.Server.Implementations/SystemEvents.cs b/Emby.Server.Implementations/SystemEvents.cs index 578338aeea..1297200f93 100644 --- a/Emby.Server.Implementations/SystemEvents.cs +++ b/Emby.Server.Implementations/SystemEvents.cs @@ -1,4 +1,4 @@ -using System; +using System; using MediaBrowser.Model.System; using Microsoft.Extensions.Logging; diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs index 6525574667..630ef4893b 100644 --- a/Emby.Server.Implementations/TV/TVSeriesManager.cs +++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs @@ -1,14 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.TV; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; -using System; -using System.Collections.Generic; -using System.Linq; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Dto; namespace Emby.Server.Implementations.TV { @@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.TV OrderBy = new[] { new ValueTuple(ItemSortBy.DatePlayed, SortOrder.Descending) }, SeriesPresentationUniqueKey = presentationUniqueKey, Limit = limit, - DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions + DtoOptions = new DtoOptions { Fields = new ItemFields[] { @@ -196,7 +196,7 @@ namespace Emby.Server.Implementations.TV IsPlayed = true, Limit = 1, ParentIndexNumberNotEquals = 0, - DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions + DtoOptions = new DtoOptions { Fields = new ItemFields[] { diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs index 507dd5e42d..991ee86887 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs @@ -179,7 +179,7 @@ namespace NLangDetect.Core DetectBlock(); } - List list = SortProbability(_langprob); + var list = SortProbability(_langprob); return list; } @@ -250,7 +250,7 @@ namespace NLangDetect.Core _langprob = new double[_langlist.Count]; - Random rand = (_seed.HasValue ? new Random(_seed.Value) : new Random()); + var rand = (_seed.HasValue ? new Random(_seed.Value) : new Random()); for (int t = 0; t < _trialsCount; t++) { @@ -305,7 +305,7 @@ namespace NLangDetect.Core private List ExtractNGrams() { var list = new List(); - NGram ngram = new NGram(); + var ngram = new NGram(); for (int i = 0; i < _text.Length; i++) { diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs index 9d75b83566..08e98d62ec 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs @@ -1,10 +1,8 @@ using System; using System.Collections.Generic; -using System.IO; -using System.IO.Compression; -using NLangDetect.Core.Utils; -using MediaBrowser.Model.Serialization; using System.Linq; +using MediaBrowser.Model.Serialization; +using NLangDetect.Core.Utils; namespace NLangDetect.Core { @@ -56,7 +54,7 @@ namespace NLangDetect.Core public static Detector Create(double alpha) { - Detector detector = CreateDetector(); + var detector = CreateDetector(); detector.SetAlpha(alpha); diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs index 3ffd3b2d91..87f07fc9cc 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs @@ -1,15 +1,15 @@ -namespace NLangDetect.Core +namespace NLangDetect.Core { - public enum ErrorCode - { - NoTextError, - FormatError, - FileLoadError, - DuplicateLangError, - NeedLoadProfileError, - CantDetectError, - CantOpenTrainData, - TrainDataFormatError, - InitParamError, - } + public enum ErrorCode + { + NoTextError, + FormatError, + FileLoadError, + DuplicateLangError, + NeedLoadProfileError, + CantDetectError, + CantOpenTrainData, + TrainDataFormatError, + InitParamError, + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs index cd77a30eb3..6e58a0be81 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs @@ -1,14 +1,14 @@ -using System; +using System; namespace NLangDetect.Core.Extensions { - public static class CharExtensions - { - private const int MIN_CODE_POINT = 0x000000; - private const int MAX_CODE_POINT = 0x10ffff; + public static class CharExtensions + { + private const int MIN_CODE_POINT = 0x000000; + private const int MAX_CODE_POINT = 0x10ffff; - private static readonly int[] _unicodeBlockStarts = - { + private static readonly int[] _unicodeBlockStarts = + { #region Unicode block starts 0x0000, // Basic Latin @@ -165,8 +165,8 @@ namespace NLangDetect.Core.Extensions #endregion }; - private static readonly UnicodeBlock?[] _unicodeBlocks = - { + private static readonly UnicodeBlock?[] _unicodeBlocks = + { #region Unicode blocks UnicodeBlock.BasicLatin, UnicodeBlock.Latin1Supplement, @@ -322,53 +322,53 @@ namespace NLangDetect.Core.Extensions #endregion }; - #region Public methods + #region Public methods - /// - /// Taken from JDK source: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Character.java#Character.UnicodeBlock.0LATIN_EXTENDED_ADDITIONAL - /// - public static UnicodeBlock? GetUnicodeBlock(this char ch) - { - int codePoint = ch; + /// + /// Taken from JDK source: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Character.java#Character.UnicodeBlock.0LATIN_EXTENDED_ADDITIONAL + /// + public static UnicodeBlock? GetUnicodeBlock(this char ch) + { + int codePoint = ch; - if (!IsValidCodePoint(codePoint)) - { - throw new ArgumentException("Argument is not a valid code point.", nameof(ch)); - } + if (!IsValidCodePoint(codePoint)) + { + throw new ArgumentException("Argument is not a valid code point.", nameof(ch)); + } - int top, bottom, current; + int top, bottom, current; - bottom = 0; - top = _unicodeBlockStarts.Length; - current = top / 2; + bottom = 0; + top = _unicodeBlockStarts.Length; + current = top / 2; - // invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom] - while (top - bottom > 1) - { - if (codePoint >= _unicodeBlockStarts[current]) - { - bottom = current; - } - else - { - top = current; - } + // invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom] + while (top - bottom > 1) + { + if (codePoint >= _unicodeBlockStarts[current]) + { + bottom = current; + } + else + { + top = current; + } - current = (top + bottom) / 2; - } + current = (top + bottom) / 2; + } - return _unicodeBlocks[current]; - } + return _unicodeBlocks[current]; + } - #endregion + #endregion - #region Private helper methods + #region Private helper methods - private static bool IsValidCodePoint(int codePoint) - { - return codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT; - } + private static bool IsValidCodePoint(int codePoint) + { + return codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT; + } - #endregion - } + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs index d55ca80df6..5b2fce60b8 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs @@ -1,51 +1,51 @@ -using System; +using System; namespace NLangDetect.Core.Extensions { - public static class RandomExtensions - { - private const double _Epsilon = 2.22044604925031E-15; - - private static readonly object _mutex = new object(); - - private static double _nextNextGaussian; - private static bool _hasNextNextGaussian; - - /// - /// Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence. - /// The general contract of nextGaussian is that one double value, chosen from (approximately) the usual normal distribution with mean 0.0 and standard deviation 1.0, is pseudorandomly generated and returned. - /// - /// - /// Taken from: http://download.oracle.com/javase/6/docs/api/java/util/Random.html (nextGaussian()) - /// - public static double NextGaussian(this Random random) + public static class RandomExtensions { - lock (_mutex) - { - if (_hasNextNextGaussian) - { - _hasNextNextGaussian = false; + private const double _Epsilon = 2.22044604925031E-15; - return _nextNextGaussian; - } + private static readonly object _mutex = new object(); - double v1, v2, s; + private static double _nextNextGaussian; + private static bool _hasNextNextGaussian; - do + /// + /// Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence. + /// The general contract of nextGaussian is that one double value, chosen from (approximately) the usual normal distribution with mean 0.0 and standard deviation 1.0, is pseudorandomly generated and returned. + /// + /// + /// Taken from: http://download.oracle.com/javase/6/docs/api/java/util/Random.html (nextGaussian()) + /// + public static double NextGaussian(this Random random) { - v1 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0 - v2 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0 - s = v1 * v1 + v2 * v2; - } - while (s >= 1.0 || Math.Abs(s - 0.0) < _Epsilon); + lock (_mutex) + { + if (_hasNextNextGaussian) + { + _hasNextNextGaussian = false; + + return _nextNextGaussian; + } - double multiplier = Math.Sqrt(-2.0 * Math.Log(s) / s); + double v1, v2, s; - _nextNextGaussian = v2 * multiplier; - _hasNextNextGaussian = true; + do + { + v1 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0 + v2 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0 + s = v1 * v1 + v2 * v2; + } + while (s >= 1.0 || Math.Abs(s - 0.0) < _Epsilon); - return v1 * multiplier; - } + double multiplier = Math.Sqrt(-2.0 * Math.Log(s) / s); + + _nextNextGaussian = v2 * multiplier; + _hasNextNextGaussian = true; + + return v1 * multiplier; + } + } } - } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs index 71b5de75e1..bcc81f9680 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs @@ -1,131 +1,131 @@ -namespace NLangDetect.Core.Extensions +namespace NLangDetect.Core.Extensions { - public enum UnicodeBlock - { - BasicLatin, - Latin1Supplement, - LatinExtendedA, - LatinExtendedB, - IpaExtensions, - SpacingModifierLetters, - CombiningDiacriticalMarks, - Greek, - Cyrillic, - CyrillicSupplementary, - Armenian, - Hebrew, - Arabic, - Syriac, - Thaana, - Devanagari, - Bengali, - Gurmukhi, - Gujarati, - Oriya, - Tamil, - Telugu, - Kannada, - Malayalam, - Sinhala, - Thai, - Lao, - Tibetan, - Myanmar, - Georgian, - HangulJamo, - Ethiopic, - Cherokee, - UnifiedCanadianAboriginalSyllabics, - Ogham, - Runic, - Tagalog, - Hanunoo, - Buhid, - Tagbanwa, - Khmer, - Mongolian, - Limbu, - TaiLe, - KhmerSymbols, - PhoneticExtensions, - LatinExtendedAdditional, - GreekExtended, - GeneralPunctuation, - SuperscriptsAndSubscripts, - CurrencySymbols, - CombiningMarksForSymbols, - LetterlikeSymbols, - NumberForms, - Arrows, - MathematicalOperators, - MiscellaneousTechnical, - ControlPictures, - OpticalCharacterRecognition, - EnclosedAlphanumerics, - BoxDrawing, - BlockElements, - GeometricShapes, - MiscellaneousSymbols, - Dingbats, - MiscellaneousMathematicalSymbolsA, - SupplementalArrowsA, - BraillePatterns, - SupplementalArrowsB, - MiscellaneousMathematicalSymbolsB, - SupplementalMathematicalOperators, - MiscellaneousSymbolsAndArrows, - CjkRadicalsSupplement, - KangxiRadicals, - IdeographicDescriptionCharacters, - CjkSymbolsAndPunctuation, - Hiragana, - Katakana, - Bopomofo, - HangulCompatibilityJamo, - Kanbun, - BopomofoExtended, - KatakanaPhoneticExtensions, - EnclosedCjkLettersAndMonths, - CjkCompatibility, - CjkUnifiedIdeographsExtensionA, - YijingHexagramSymbols, - CjkUnifiedIdeographs, - YiSyllables, - YiRadicals, - HangulSyllables, - HighSurrogates, - HighPrivateUseSurrogates, - LowSurrogates, - PrivateUseArea, - CjkCompatibilityIdeographs, - AlphabeticPresentationForms, - ArabicPresentationFormsA, - VariationSelectors, - CombiningHalfMarks, - CjkCompatibilityForms, - SmallFormVariants, - ArabicPresentationFormsB, - HalfwidthAndFullwidthForms, - Specials, - LinearBSyllabary, - LinearBIdeograms, - AegeanNumbers, - OldItalic, - Gothic, - Ugaritic, - Deseret, - Shavian, - Osmanya, - CypriotSyllabary, - ByzantineMusicalSymbols, - MusicalSymbols, - TaiXuanJingSymbols, - MathematicalAlphanumericSymbols, - CjkUnifiedIdeographsExtensionB, - CjkCompatibilityIdeographsSupplement, - Tags, - VariationSelectorsSupplement, - SupplementaryPrivateUseAreaA, - SupplementaryPrivateUseAreaB, - } + public enum UnicodeBlock + { + BasicLatin, + Latin1Supplement, + LatinExtendedA, + LatinExtendedB, + IpaExtensions, + SpacingModifierLetters, + CombiningDiacriticalMarks, + Greek, + Cyrillic, + CyrillicSupplementary, + Armenian, + Hebrew, + Arabic, + Syriac, + Thaana, + Devanagari, + Bengali, + Gurmukhi, + Gujarati, + Oriya, + Tamil, + Telugu, + Kannada, + Malayalam, + Sinhala, + Thai, + Lao, + Tibetan, + Myanmar, + Georgian, + HangulJamo, + Ethiopic, + Cherokee, + UnifiedCanadianAboriginalSyllabics, + Ogham, + Runic, + Tagalog, + Hanunoo, + Buhid, + Tagbanwa, + Khmer, + Mongolian, + Limbu, + TaiLe, + KhmerSymbols, + PhoneticExtensions, + LatinExtendedAdditional, + GreekExtended, + GeneralPunctuation, + SuperscriptsAndSubscripts, + CurrencySymbols, + CombiningMarksForSymbols, + LetterlikeSymbols, + NumberForms, + Arrows, + MathematicalOperators, + MiscellaneousTechnical, + ControlPictures, + OpticalCharacterRecognition, + EnclosedAlphanumerics, + BoxDrawing, + BlockElements, + GeometricShapes, + MiscellaneousSymbols, + Dingbats, + MiscellaneousMathematicalSymbolsA, + SupplementalArrowsA, + BraillePatterns, + SupplementalArrowsB, + MiscellaneousMathematicalSymbolsB, + SupplementalMathematicalOperators, + MiscellaneousSymbolsAndArrows, + CjkRadicalsSupplement, + KangxiRadicals, + IdeographicDescriptionCharacters, + CjkSymbolsAndPunctuation, + Hiragana, + Katakana, + Bopomofo, + HangulCompatibilityJamo, + Kanbun, + BopomofoExtended, + KatakanaPhoneticExtensions, + EnclosedCjkLettersAndMonths, + CjkCompatibility, + CjkUnifiedIdeographsExtensionA, + YijingHexagramSymbols, + CjkUnifiedIdeographs, + YiSyllables, + YiRadicals, + HangulSyllables, + HighSurrogates, + HighPrivateUseSurrogates, + LowSurrogates, + PrivateUseArea, + CjkCompatibilityIdeographs, + AlphabeticPresentationForms, + ArabicPresentationFormsA, + VariationSelectors, + CombiningHalfMarks, + CjkCompatibilityForms, + SmallFormVariants, + ArabicPresentationFormsB, + HalfwidthAndFullwidthForms, + Specials, + LinearBSyllabary, + LinearBIdeograms, + AegeanNumbers, + OldItalic, + Gothic, + Ugaritic, + Deseret, + Shavian, + Osmanya, + CypriotSyllabary, + ByzantineMusicalSymbols, + MusicalSymbols, + TaiXuanJingSymbols, + MathematicalAlphanumericSymbols, + CjkUnifiedIdeographsExtensionB, + CjkCompatibilityIdeographsSupplement, + Tags, + VariationSelectorsSupplement, + SupplementaryPrivateUseAreaA, + SupplementaryPrivateUseAreaB, + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs index 5895f68aea..26157483b6 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs @@ -1,67 +1,67 @@ using System; +using System.IO; using System.IO.Compression; using System.Xml; using NLangDetect.Core.Utils; -using System.IO; namespace NLangDetect.Core { - // TODO IMM HI: xml reader not tested - public static class GenProfile - { - #region Public methods - - public static LangProfile load(string lang, string file) + // TODO IMM HI: xml reader not tested + public static class GenProfile { - LangProfile profile = new LangProfile(lang); - TagExtractor tagextractor = new TagExtractor("abstract", 100); - Stream inputStream = null; - - try - { - inputStream = File.OpenRead(file); - - string extension = Path.GetExtension(file) ?? ""; + #region Public methods - if (extension.ToUpper() == ".GZ") + public static LangProfile load(string lang, string file) { - inputStream = new GZipStream(inputStream, CompressionMode.Decompress); - } + var profile = new LangProfile(lang); + var tagextractor = new TagExtractor("abstract", 100); + Stream inputStream = null; - using (XmlReader xmlReader = XmlReader.Create(inputStream)) - { - while (xmlReader.Read()) - { - switch (xmlReader.NodeType) + try { - case XmlNodeType.Element: - tagextractor.SetTag(xmlReader.Name); - break; + inputStream = File.OpenRead(file); + + string extension = Path.GetExtension(file) ?? ""; + + if (extension.ToUpper() == ".GZ") + { + inputStream = new GZipStream(inputStream, CompressionMode.Decompress); + } - case XmlNodeType.Text: - tagextractor.Add(xmlReader.Value); - break; + using (var xmlReader = XmlReader.Create(inputStream)) + { + while (xmlReader.Read()) + { + switch (xmlReader.NodeType) + { + case XmlNodeType.Element: + tagextractor.SetTag(xmlReader.Name); + break; - case XmlNodeType.EndElement: - tagextractor.CloseTag(profile); - break; + case XmlNodeType.Text: + tagextractor.Add(xmlReader.Value); + break; + + case XmlNodeType.EndElement: + tagextractor.CloseTag(profile); + break; + } + } + } + } + finally + { + if (inputStream != null) + { + inputStream.Close(); + } } - } - } - } - finally - { - if (inputStream != null) - { - inputStream.Close(); - } - } - Console.WriteLine(lang + ": " + tagextractor.Count); + Console.WriteLine(lang + ": " + tagextractor.Count); - return profile; - } + return profile; + } - #endregion - } + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs index 32e50a219b..6ed1efa88c 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs @@ -1,22 +1,22 @@ -using System; +using System; namespace NLangDetect.Core { - [Serializable] - public class InternalException : Exception - { - #region Constructor(s) - - public InternalException(string message, Exception innerException) - : base(message, innerException) + [Serializable] + public class InternalException : Exception { - } + #region Constructor(s) - public InternalException(string message) - : this(message, null) - { - } + public InternalException(string message, Exception innerException) + : base(message, innerException) + { + } + + public InternalException(string message) + : this(message, null) + { + } - #endregion - } + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs index f4b4b153ee..e15263c051 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs @@ -2,44 +2,44 @@ using System.Globalization; namespace NLangDetect.Core { - // TODO IMM HI: name?? - public class Language - { - #region Constructor(s) - - public Language(string name, double probability) + // TODO IMM HI: name?? + public class Language { - Name = name; - Probability = probability; - } + #region Constructor(s) - #endregion + public Language(string name, double probability) + { + Name = name; + Probability = probability; + } - #region Object overrides + #endregion - public override string ToString() - { - if (Name == null) - { - return ""; - } - - return - string.Format( - CultureInfo.InvariantCulture.NumberFormat, - "{0}:{1:0.000000}", - Name, - Probability); - } + #region Object overrides - #endregion + public override string ToString() + { + if (Name == null) + { + return ""; + } - #region Properties + return + string.Format( + CultureInfo.InvariantCulture.NumberFormat, + "{0}:{1:0.000000}", + Name, + Probability); + } - public string Name { get; set; } + #endregion - public double Probability { get; set; } + #region Properties - #endregion - } + public string Name { get; set; } + + public double Probability { get; set; } + + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs index 044c7e7592..a26f236a81 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs @@ -1,4 +1,4 @@ -using System; +using System; using MediaBrowser.Model.Serialization; namespace NLangDetect.Core @@ -25,7 +25,7 @@ namespace NLangDetect.Core { if (string.IsNullOrEmpty(plainText)) { throw new ArgumentException("Argument can't be null nor empty.", nameof(plainText)); } - Detector detector = DetectorFactory.Create(_DefaultAlpha); + var detector = DetectorFactory.Create(_DefaultAlpha); detector.Append(plainText); diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs index e0d066020c..800858bca5 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs @@ -1,23 +1,23 @@ -using System; +using System; namespace NLangDetect.Core { - public class NLangDetectException : Exception - { - #region Constructor(s) - - public NLangDetectException(string message, ErrorCode errorCode) - : base(message) + public class NLangDetectException : Exception { - ErrorCode = errorCode; - } + #region Constructor(s) - #endregion + public NLangDetectException(string message, ErrorCode errorCode) + : base(message) + { + ErrorCode = errorCode; + } - #region Properties + #endregion - public ErrorCode ErrorCode { get; private set; } + #region Properties - #endregion - } + public ErrorCode ErrorCode { get; private set; } + + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs index c5a20dbf0a..d7afb41133 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs @@ -1,35 +1,33 @@ -using System; +using System; using System.Collections.Generic; namespace NLangDetect.Core { - public class ProbVector - { - private readonly Dictionary _dict = new Dictionary(); - - public double this[int key] + public class ProbVector { - get - { - double value; - - return _dict.TryGetValue(key, out value) ? value : 0.0; - } + private readonly Dictionary _dict = new Dictionary(); - set - { - if (Math.Abs(value) < double.Epsilon) + public double this[int key] { - if (_dict.ContainsKey(key)) - { - _dict.Remove(key); - } + get + { + return _dict.TryGetValue(key, out var value) ? value : 0.0; + } - return; - } + set + { + if (Math.Abs(value) < double.Epsilon) + { + if (_dict.ContainsKey(key)) + { + _dict.Remove(key); + } - _dict[key] = value; - } + return; + } + + _dict[key] = value; + } + } } - } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs index 0413edfadc..78b44e1fcc 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs @@ -59,8 +59,8 @@ namespace NLangDetect.Core.Utils ICollection keys = freq.Keys; int roman = 0; // TODO IMM HI: move up? - Regex regex1 = new Regex("^[A-Za-z]$", RegexOptions.Compiled); - List keysToRemove = new List(); + var regex1 = new Regex("^[A-Za-z]$", RegexOptions.Compiled); + var keysToRemove = new List(); foreach (string key in keys) { @@ -93,7 +93,7 @@ namespace NLangDetect.Core.Utils ICollection keys2 = freq.Keys; // TODO IMM HI: move up? - Regex regex2 = new Regex(".*[A-Za-z].*", RegexOptions.Compiled); + var regex2 = new Regex(".*[A-Za-z].*", RegexOptions.Compiled); foreach (string key in keys2) { diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs index 1d605cc47f..879c0a09b2 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs @@ -1,10 +1,9 @@ +using System; using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Reflection; -using System.Text.RegularExpressions; using System.Linq; -using System; +using System.Text.RegularExpressions; namespace NLangDetect.Core.Utils { @@ -19,19 +18,17 @@ namespace NLangDetect.Core.Utils public static string getString(string key) { - string value; - return - _messages.TryGetValue(key, out value) + _messages.TryGetValue(key, out var value) ? value : string.Format("!{0}!", key); } private static Dictionary LoadMessages() { - var manifestName = typeof(Messages).Assembly.GetManifestResourceNames().FirstOrDefault(i => i.IndexOf("messages.properties", StringComparison.Ordinal) != -1) ; + var manifestName = typeof(Messages).Assembly.GetManifestResourceNames().FirstOrDefault(i => i.IndexOf("messages.properties", StringComparison.Ordinal) != -1); - Stream messagesStream = + var messagesStream = typeof(Messages).Assembly .GetManifestResourceStream(manifestName); diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs index b1738f7ca9..2d29ec6973 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs @@ -6,14 +6,14 @@ using NLangDetect.Core.Extensions; namespace NLangDetect.Core.Utils { - public class NGram - { - public const int GramsCount = 3; + public class NGram + { + public const int GramsCount = 3; - private static readonly string Latin1Excluded = Messages.getString("NGram.LATIN1_EXCLUDE"); + private static readonly string Latin1Excluded = Messages.getString("NGram.LATIN1_EXCLUDE"); - private static readonly string[] CjkClass = - { + private static readonly string[] CjkClass = + { #region CJK classes Messages.getString("NGram.KANJI_1_0"), @@ -146,185 +146,185 @@ namespace NLangDetect.Core.Utils #endregion }; - private static readonly Dictionary _cjkMap; + private static readonly Dictionary _cjkMap; - private StringBuilder _grams; - private bool _capitalword; + private StringBuilder _grams; + private bool _capitalword; - #region Constructor(s) + #region Constructor(s) - static NGram() - { - _cjkMap = new Dictionary(); + static NGram() + { + _cjkMap = new Dictionary(); - foreach (string cjk_list in CjkClass) - { - char representative = cjk_list[0]; + foreach (string cjk_list in CjkClass) + { + char representative = cjk_list[0]; - for (int i = 0; i < cjk_list.Length; i++) - { - _cjkMap.Add(cjk_list[i], representative); + for (int i = 0; i < cjk_list.Length; i++) + { + _cjkMap.Add(cjk_list[i], representative); + } + } } - } - } - - public NGram() - { - _grams = new StringBuilder(" "); - _capitalword = false; - } - #endregion + public NGram() + { + _grams = new StringBuilder(" "); + _capitalword = false; + } - #region Public methods + #endregion - public static char Normalize(char ch) - { - UnicodeBlock? unicodeBlock = ch.GetUnicodeBlock(); + #region Public methods - if (!unicodeBlock.HasValue) - { - return ch; - } + public static char Normalize(char ch) + { + UnicodeBlock? unicodeBlock = ch.GetUnicodeBlock(); - switch (unicodeBlock.Value) - { - case UnicodeBlock.BasicLatin: - { - if (ch < 'A' || (ch < 'a' && ch > 'Z') || ch > 'z') + if (!unicodeBlock.HasValue) { - return ' '; + return ch; } - break; - } - - case UnicodeBlock.Latin1Supplement: - { - if (Latin1Excluded.IndexOf(ch) >= 0) + switch (unicodeBlock.Value) { - return ' '; + case UnicodeBlock.BasicLatin: + { + if (ch < 'A' || (ch < 'a' && ch > 'Z') || ch > 'z') + { + return ' '; + } + + break; + } + + case UnicodeBlock.Latin1Supplement: + { + if (Latin1Excluded.IndexOf(ch) >= 0) + { + return ' '; + } + + break; + } + + case UnicodeBlock.GeneralPunctuation: + { + return ' '; + } + + case UnicodeBlock.Arabic: + { + if (ch == '\u06cc') + { + return '\u064a'; + } + + break; + } + + case UnicodeBlock.LatinExtendedAdditional: + { + if (ch >= '\u1ea0') + { + return '\u1ec3'; + } + + break; + } + + case UnicodeBlock.Hiragana: + { + return '\u3042'; + } + + case UnicodeBlock.Katakana: + { + return '\u30a2'; + } + + case UnicodeBlock.Bopomofo: + case UnicodeBlock.BopomofoExtended: + { + return '\u3105'; + } + + case UnicodeBlock.CjkUnifiedIdeographs: + { + if (_cjkMap.ContainsKey(ch)) + { + return _cjkMap[ch]; + } + + break; + } + + case UnicodeBlock.HangulSyllables: + { + return '\uac00'; + } } - break; - } - - case UnicodeBlock.GeneralPunctuation: - { - return ' '; - } + return ch; + } - case UnicodeBlock.Arabic: - { - if (ch == '\u06cc') + public void AddChar(char ch) + { + ch = Normalize(ch); + char lastchar = _grams[_grams.Length - 1]; + if (lastchar == ' ') { - return '\u064a'; + _grams = new StringBuilder(" "); + _capitalword = false; + if (ch == ' ') return; } - - break; - } - - case UnicodeBlock.LatinExtendedAdditional: - { - if (ch >= '\u1ea0') + else if (_grams.Length >= GramsCount) { - return '\u1ec3'; + _grams.Remove(0, 1); } + _grams.Append(ch); - break; - } - - case UnicodeBlock.Hiragana: - { - return '\u3042'; - } - - case UnicodeBlock.Katakana: - { - return '\u30a2'; - } - - case UnicodeBlock.Bopomofo: - case UnicodeBlock.BopomofoExtended: - { - return '\u3105'; - } - - case UnicodeBlock.CjkUnifiedIdeographs: - { - if (_cjkMap.ContainsKey(ch)) + if (char.IsUpper(ch)) { - return _cjkMap[ch]; + if (char.IsUpper(lastchar)) _capitalword = true; } + else + { + _capitalword = false; + } + } - break; - } - - case UnicodeBlock.HangulSyllables: - { - return '\uac00'; - } - } - - return ch; - } + public string Get(int n) + { + if (_capitalword) + { + return null; + } - public void AddChar(char ch) - { - ch = Normalize(ch); - char lastchar = _grams[_grams.Length - 1]; - if (lastchar == ' ') - { - _grams = new StringBuilder(" "); - _capitalword = false; - if (ch == ' ') return; - } - else if (_grams.Length >= GramsCount) - { - _grams.Remove(0, 1); - } - _grams.Append(ch); - - if (char.IsUpper(ch)) - { - if (char.IsUpper(lastchar)) _capitalword = true; - } - else - { - _capitalword = false; - } - } + int len = _grams.Length; - public string Get(int n) - { - if (_capitalword) - { - return null; - } + if (n < 1 || n > 3 || len < n) + { + return null; + } - int len = _grams.Length; + if (n == 1) + { + char ch = _grams[len - 1]; - if (n < 1 || n > 3 || len < n) - { - return null; - } + if (ch == ' ') + { + return null; + } - if (n == 1) - { - char ch = _grams[len - 1]; + return ch.ToString(); + } - if (ch == ' ') - { - return null; + // TODO IMM HI: is ToString() here effective? + return _grams.ToString().SubSequence(len - n, len); } - return ch.ToString(); - } - - // TODO IMM HI: is ToString() here effective? - return _grams.ToString().SubSequence(len - n, len); + #endregion } - - #endregion - } } diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs index 896fd0960a..4441ecd0fb 100644 --- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs +++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs @@ -2,75 +2,75 @@ using System.Text; namespace NLangDetect.Core.Utils { - public class TagExtractor - { - // TODO IMM HI: do the really need to be internal? - internal string Target; - internal int Threshold; - internal StringBuilder StringBuilder; - internal string Tag; - - #region Constructor(s) - - public TagExtractor(string tag, int threshold) + public class TagExtractor { - Target = tag; - Threshold = threshold; - Count = 0; - Clear(); - } + // TODO IMM HI: do the really need to be internal? + internal string Target; + internal int Threshold; + internal StringBuilder StringBuilder; + internal string Tag; - #endregion + #region Constructor(s) - #region Public methods - - public void Clear() - { - StringBuilder = new StringBuilder(); - Tag = null; - } + public TagExtractor(string tag, int threshold) + { + Target = tag; + Threshold = threshold; + Count = 0; + Clear(); + } - public void SetTag(string tag) - { - Tag = tag; - } + #endregion - public void Add(string line) - { - if (Tag == Target && line != null) - { - StringBuilder.Append(line); - } - } + #region Public methods - public void CloseTag(LangProfile profile) - { - if (profile != null && Tag == Target && StringBuilder.Length > Threshold) - { - var gram = new NGram(); + public void Clear() + { + StringBuilder = new StringBuilder(); + Tag = null; + } - for (int i = 0; i < StringBuilder.Length; i++) + public void SetTag(string tag) { - gram.AddChar(StringBuilder[i]); + Tag = tag; + } - for (int n = 1; n <= NGram.GramsCount; n++) - { - profile.Add(gram.Get(n)); - } + public void Add(string line) + { + if (Tag == Target && line != null) + { + StringBuilder.Append(line); + } } - Count++; - } + public void CloseTag(LangProfile profile) + { + if (profile != null && Tag == Target && StringBuilder.Length > Threshold) + { + var gram = new NGram(); + + for (int i = 0; i < StringBuilder.Length; i++) + { + gram.AddChar(StringBuilder[i]); - Clear(); - } + for (int n = 1; n <= NGram.GramsCount; n++) + { + profile.Add(gram.Get(n)); + } + } + + Count++; + } - #endregion + Clear(); + } + + #endregion - #region Properties + #region Properties - public int Count { get; private set; } + public int Count { get; private set; } - #endregion - } + #endregion + } } diff --git a/Emby.Server.Implementations/TextEncoding/TextEncoding.cs b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs index 8f15d5a7b9..09705d3815 100644 --- a/Emby.Server.Implementations/TextEncoding/TextEncoding.cs +++ b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs @@ -1,9 +1,9 @@ using System; using System.Text; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Text; +using Microsoft.Extensions.Logging; using NLangDetect.Core; using UniversalDetector; diff --git a/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs index 15f1ce91e5..49a371efad 100644 --- a/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs +++ b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs @@ -1,4 +1,4 @@ -namespace Emby.Server.Implementations.TextEncoding +namespace Emby.Server.Implementations.TextEncoding { // Copyright 2015-2016 Jonathan Bennett // diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs index 922239c541..8cd2ae658d 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs @@ -100,7 +100,7 @@ namespace UniversalDetector this.confidence = 0.0f; base.Reset(); } - + public string Charset => charset; public float Confidence => confidence; @@ -109,9 +109,9 @@ namespace UniversalDetector { this.charset = charset; this.confidence = confidence; -// if (Finished != null) { -// Finished(charset, confidence); -// } + // if (Finished != null) { + // Finished(charset, confidence); + // } } } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs index 19152a7acc..68c7d681bb 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs @@ -57,27 +57,34 @@ namespace UniversalDetector.Core int codingState = 0; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; distributionAnalyser.HandleOneChar(lastChar, 0, charLen); - } else { - distributionAnalyser.HandleOneChar(buf, i-1, charLen); + } + else + { + distributionAnalyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; if (state == ProbingState.Detecting) if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs index 19bcdc7792..8554cba66b 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs @@ -40,20 +40,20 @@ namespace UniversalDetector.Core { public class BitPackage { - public static int INDEX_SHIFT_4BITS = 3; - public static int INDEX_SHIFT_8BITS = 2; + public static int INDEX_SHIFT_4BITS = 3; + public static int INDEX_SHIFT_8BITS = 2; public static int INDEX_SHIFT_16BITS = 1; - public static int SHIFT_MASK_4BITS = 7; - public static int SHIFT_MASK_8BITS = 3; + public static int SHIFT_MASK_4BITS = 7; + public static int SHIFT_MASK_8BITS = 3; public static int SHIFT_MASK_16BITS = 1; - public static int BIT_SHIFT_4BITS = 2; - public static int BIT_SHIFT_8BITS = 3; + public static int BIT_SHIFT_4BITS = 2; + public static int BIT_SHIFT_8BITS = 3; public static int BIT_SHIFT_16BITS = 4; - public static int UNIT_MASK_4BITS = 0x0000000F; - public static int UNIT_MASK_8BITS = 0x000000FF; + public static int UNIT_MASK_4BITS = 0x0000000F; + public static int UNIT_MASK_8BITS = 0x000000FF; public static int UNIT_MASK_16BITS = 0x0000FFFF; private int indexShift; @@ -94,5 +94,5 @@ namespace UniversalDetector.Core return (data[i >> indexShift] >> ((i & shiftMask) << bitShift)) & unitMask; } - } + } } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs index da59959327..601b4906a4 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs @@ -83,7 +83,7 @@ namespace UniversalDetector.Core /// convert this encoding string to a number, here called order. /// This allow multiple encoding of a language to share one frequency table /// - /// A + /// A /// /// public abstract int GetOrder(byte[] buf, int offset); @@ -91,15 +91,17 @@ namespace UniversalDetector.Core /// /// Feed a character with known length /// - /// A + /// A /// buf offset public void HandleOneChar(byte[] buf, int offset, int charLen) { //we only care about 2-bytes character in our distribution analysis int order = (charLen == 2) ? GetOrder(buf, offset) : -1; - if (order >= 0) { + if (order >= 0) + { totalChars++; - if (order < tableSize) { // order is valid + if (order < tableSize) + { // order is valid if (512 > charToFreqOrder[order]) freqChars++; } @@ -124,7 +126,8 @@ namespace UniversalDetector.Core // negative answer if (totalChars <= 0 || freqChars <= MINIMUM_DATA_THRESHOLD) return SURE_NO; - if (totalChars != freqChars) { + if (totalChars != freqChars) + { float r = freqChars / ((totalChars - freqChars) * typicalDistributionRatio); if (r < SURE_YES) return r; @@ -610,8 +613,8 @@ namespace UniversalDetector.Core /// public override int GetOrder(byte[] buf, int offset) { - if (buf[offset] >= 0xB0 && buf[offset+1] >= 0xA1) - return 94 * (buf[offset] - 0xb0) + buf[offset+1] - 0xA1; + if (buf[offset] >= 0xB0 && buf[offset + 1] >= 0xA1) + return 94 * (buf[offset] - 0xb0) + buf[offset + 1] - 0xA1; else return -1; } @@ -1040,7 +1043,7 @@ namespace UniversalDetector.Core public override int GetOrder(byte[] buf, int offset) { if (buf[offset] >= 0xC4) - return 94 * (buf[offset] - 0xC4) + buf[offset+1] - 0xA1; + return 94 * (buf[offset] - 0xC4) + buf[offset + 1] - 0xA1; else return -1; } @@ -1048,7 +1051,7 @@ namespace UniversalDetector.Core public class EUCKRDistributionAnalyser : CharDistributionAnalyser { - // Sampling from about 20M text materials include literature and computer technology + // Sampling from about 20M text materials include literature and computer technology /* * 128 --> 0.79 * 256 --> 0.92 @@ -1634,7 +1637,7 @@ namespace UniversalDetector.Core public override int GetOrder(byte[] buf, int offset) { if (buf[offset] >= 0xB0) - return 94 * (buf[offset] - 0xB0) + buf[offset+1] - 0xA1; + return 94 * (buf[offset] - 0xB0) + buf[offset + 1] - 0xA1; else return -1; } @@ -2559,12 +2562,15 @@ namespace UniversalDetector.Core /// public override int GetOrder(byte[] buf, int offset) { - if (buf[offset] >= 0xA4) { - if (buf[offset+1] >= 0xA1) - return 157 * (buf[offset] - 0xA4) + buf[offset+1] - 0xA1 + 63; + if (buf[offset] >= 0xA4) + { + if (buf[offset + 1] >= 0xA1) + return 157 * (buf[offset] - 0xA4) + buf[offset + 1] - 0xA1 + 63; else - return 157 * (buf[offset] - 0xA4) + buf[offset+1] - 0x40; - } else { + return 157 * (buf[offset] - 0xA4) + buf[offset + 1] - 0x40; + } + else + { return -1; } } @@ -3140,9 +3146,9 @@ namespace UniversalDetector.Core order = 188 * (buf[offset] - 0xE0 + 31); else return -1; - order += buf[offset+1] - 0x40; + order += buf[offset + 1] - 0x40; - if (buf[offset+1] > 0x7F) + if (buf[offset + 1] > 0x7F) order--; return order; } @@ -3162,7 +3168,7 @@ namespace UniversalDetector.Core public override int GetOrder(byte[] buf, int offset) { if (buf[offset] >= 0xA0) - return 94 * (buf[offset] - 0xA1) + buf[offset+1] - 0xA1; + return 94 * (buf[offset] - 0xA1) + buf[offset + 1] - 0xA1; else return -1; } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs index cc4539058d..e61e5848d7 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs @@ -40,7 +40,8 @@ using System.IO; namespace UniversalDetector.Core { - public enum ProbingState { + public enum ProbingState + { Detecting = 0, // no sure answer yet, but caller can ask for confidence FoundIt = 1, // positive answer NotMe = 2 // negative answer @@ -107,21 +108,27 @@ namespace UniversalDetector.Core { byte[] result = null; - using (MemoryStream ms = new MemoryStream(buf.Length)) { + using (var ms = new MemoryStream(buf.Length)) + { bool meetMSB = false; int max = offset + len; int prev = offset; int cur = offset; - while (cur < max) { + while (cur < max) + { byte b = buf[cur]; - if ((b & 0x80) != 0) { + if ((b & 0x80) != 0) + { meetMSB = true; - } else if (b < CAPITAL_A || (b > CAPITAL_Z && b < SMALL_A) - || b > SMALL_Z) { - if (meetMSB && cur > prev) { + } + else if (b < CAPITAL_A || (b > CAPITAL_Z && b < SMALL_A) + || b > SMALL_Z) + { + if (meetMSB && cur > prev) + { ms.Write(buf, prev, cur - prev); ms.WriteByte(SPACE); meetMSB = false; @@ -149,14 +156,16 @@ namespace UniversalDetector.Core { byte[] result = null; - using (MemoryStream ms = new MemoryStream(buf.Length)) { + using (var ms = new MemoryStream(buf.Length)) + { bool inTag = false; int max = offset + len; int prev = offset; int cur = offset; - while (cur < max) { + while (cur < max) + { byte b = buf[cur]; @@ -167,8 +176,10 @@ namespace UniversalDetector.Core // it's ascii, but it's not a letter if ((b & 0x80) == 0 && (b < CAPITAL_A || b > SMALL_Z - || (b > CAPITAL_Z && b < SMALL_A))) { - if (cur > prev && !inTag) { + || (b > CAPITAL_Z && b < SMALL_A))) + { + if (cur > prev && !inTag) + { ms.Write(buf, prev, cur - prev); ms.WriteByte(SPACE); } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs index 34f24161df..7ba1f2aa38 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs @@ -60,7 +60,8 @@ namespace UniversalDetector.Core // for each byte we get its class, if it is first byte, // we also get byte length int byteCls = model.GetClass(b); - if (currentState == SMModel.START) { + if (currentState == SMModel.START) + { currentBytePos = 0; currentCharLen = model.charLenTable[byteCls]; } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs index eac67fe956..56bcf22741 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs @@ -62,29 +62,36 @@ namespace UniversalDetector.Core int codingState; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; contextAnalyser.HandleOneChar(lastChar, 0, charLen); distributionAnalyser.HandleOneChar(lastChar, 0, charLen); - } else { - contextAnalyser.HandleOneChar(buf, i-1, charLen); - distributionAnalyser.HandleOneChar(buf, i-1, charLen); + } + else + { + contextAnalyser.HandleOneChar(buf, i - 1, charLen); + distributionAnalyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; if (state == ProbingState.Detecting) if (contextAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) state = ProbingState.FoundIt; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs index b1543dae16..ac9a0b559b 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs @@ -60,27 +60,34 @@ namespace UniversalDetector.Core int codingState; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; distributionAnalyser.HandleOneChar(lastChar, 0, charLen); - } else { - distributionAnalyser.HandleOneChar(buf, i-1, charLen); + } + else + { + distributionAnalyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; if (state == ProbingState.Detecting) if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs index 65a521760a..94a14d1669 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs @@ -56,27 +56,34 @@ namespace UniversalDetector.Core int codingState; int max = offset + len; - for (int i = 0; i < max; i++) { + for (int i = 0; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; distributionAnalyser.HandleOneChar(lastChar, 0, charLen); - } else { - distributionAnalyser.HandleOneChar(buf, i-1, charLen); + } + else + { + distributionAnalyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; if (state == ProbingState.Detecting) if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs index f457bf4902..e8da73c1c7 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs @@ -67,22 +67,30 @@ namespace UniversalDetector.Core { int max = offset + len; - for (int i = offset; i < max && state == ProbingState.Detecting; i++) { - for (int j = activeSM - 1; j >= 0; j--) { + for (int i = offset; i < max && state == ProbingState.Detecting; i++) + { + for (int j = activeSM - 1; j >= 0; j--) + { // byte is feed to all active state machine int codingState = codingSM[j].NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { // got negative answer for this state machine, make it inactive activeSM--; - if (activeSM == 0) { + if (activeSM == 0) + { state = ProbingState.NotMe; return state; - } else if (j != activeSM) { + } + else if (j != activeSM) + { CodingStateMachine t = codingSM[activeSM]; codingSM[activeSM] = codingSM[j]; codingSM[j] = t; } - } else if (codingState == SMModel.ITSME) { + } + else if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; detectedCharset = codingSM[j].ModelName; return state; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs index 6ebfa8a4ca..38471e28cc 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs @@ -87,7 +87,7 @@ namespace UniversalDetector.Core BitPackage.Pack4bits( 4, ITSME, START, START, START, START, START, START) //28-2f }; - private readonly static int[] HZCharLenTable = {0, 0, 0, 0, 0, 0}; + private readonly static int[] HZCharLenTable = { 0, 0, 0, 0, 0, 0 }; public HZSMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, @@ -153,7 +153,7 @@ namespace UniversalDetector.Core BitPackage.Pack4bits(ERROR,ERROR,ERROR,ERROR,ERROR,ITSME,ERROR,START) //38-3f }; - private readonly static int[] ISO2022CNCharLenTable = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + private readonly static int[] ISO2022CNCharLenTable = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; public ISO2022CNSMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, @@ -220,7 +220,7 @@ namespace UniversalDetector.Core BitPackage.Pack4bits(ERROR, ERROR, ERROR,ERROR,ITSME,ERROR,START,START) //40-47 }; - private readonly static int[] ISO2022JPCharLenTable = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + private readonly static int[] ISO2022JPCharLenTable = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; public ISO2022JPSMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, @@ -284,7 +284,7 @@ namespace UniversalDetector.Core BitPackage.Pack4bits(ERROR,ERROR,ERROR,ITSME,START,START,START,START) //20-27 }; - private readonly static int[] ISO2022KRCharLenTable = {0, 0, 0, 0, 0, 0}; + private readonly static int[] ISO2022KRCharLenTable = { 0, 0, 0, 0, 0, 0 }; public ISO2022KRSMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs index 0d2ebd8c73..f805524eb2 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs @@ -64,30 +64,38 @@ namespace UniversalDetector.Core int codingState = SMModel.START; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; analyser.HandleOneChar(lastChar, 0, charLen); - } else { - analyser.HandleOneChar(buf, i-1, charLen); + } + else + { + analyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; - if (state == ProbingState.Detecting) { + if (state == ProbingState.Detecting) + { if (analyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) state = ProbingState.FoundIt; } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs index 2cbf33075c..bd7490ad76 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; /** * General ideas of the Hebrew charset recognition @@ -144,11 +143,11 @@ namespace UniversalDetector.Core public class HebrewProber : CharsetProber { // windows-1255 / ISO-8859-8 code points of interest - private const byte FINAL_KAF = 0xEA; + private const byte FINAL_KAF = 0xEA; private const byte NORMAL_KAF = 0xEB; - private const byte FINAL_MEM = 0xED; + private const byte FINAL_MEM = 0xED; private const byte NORMAL_MEM = 0xEE; - private const byte FINAL_NUN = 0xEF; + private const byte FINAL_NUN = 0xEF; private const byte NORMAL_NUN = 0xF0; private const byte FINAL_PE = 0xF3; private const byte NORMAL_PE = 0xF4; @@ -217,14 +216,17 @@ namespace UniversalDetector.Core int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { byte b = buf[i]; // a word just ended - if (b == 0x20) { + if (b == 0x20) + { // *(curPtr-2) was not a space so prev is not a 1 letter word - if (beforePrev != 0x20) { + if (beforePrev != 0x20) + { // case (1) [-2:not space][-1:final letter][cur:space] if (IsFinal(prev)) finalCharLogicalScore++; @@ -233,7 +235,9 @@ namespace UniversalDetector.Core finalCharVisualScore++; } - } else { + } + else + { // case (3) [-2:space][-1:final letter][cur:not space] if ((beforePrev == 0x20) && (IsFinal(prev)) && (b != ' ')) ++finalCharVisualScore; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs index 7d28224c55..a2bf04ba09 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs @@ -160,7 +160,7 @@ namespace UniversalDetector.Core { // This is just one way to calculate confidence. It works well for me. if (totalRel > MINIMUM_DATA_THRESHOLD) - return ((float)(totalRel - relSample[0]))/totalRel; + return ((float)(totalRel - relSample[0])) / totalRel; else return DONT_KNOW; } @@ -181,22 +181,28 @@ namespace UniversalDetector.Core // to record those bytes as well and analyse the character once it // is complete, but since a character will not make much difference, // skipping it will simplify our logic and improve performance. - for (int i = needToSkipCharNum+offset; i < max; ) { + for (int i = needToSkipCharNum + offset; i < max;) + { int order = GetOrder(buf, i, out charLen); i += charLen; - if (i > max) { + if (i > max) + { needToSkipCharNum = i - max; lastCharOrder = -1; - } else { - if (order != -1 && lastCharOrder != -1) { - totalRel ++; - if (totalRel > MAX_REL_THRESHOLD) { + } + else + { + if (order != -1 && lastCharOrder != -1) + { + totalRel++; + if (totalRel > MAX_REL_THRESHOLD) + { done = true; break; } relSample[jp2CharContext[lastCharOrder, order]]++; - } - lastCharOrder = order; + } + lastCharOrder = order; } } } @@ -210,7 +216,8 @@ namespace UniversalDetector.Core // Only 2-bytes characters are of our interest int order = (charLen == 2) ? GetOrder(buf, offset) : -1; - if (order != -1 && lastCharOrder != -1) { + if (order != -1 && lastCharOrder != -1) + { totalRel++; // count this sequence to its category counter relSample[jp2CharContext[lastCharOrder, order]]++; @@ -221,7 +228,8 @@ namespace UniversalDetector.Core public void Reset() { totalRel = 0; - for (int i = 0; i < CATEGORIES_NUM; i++) { + for (int i = 0; i < CATEGORIES_NUM; i++) + { relSample[i] = 0; needToSkipCharNum = 0; lastCharOrder = -1; @@ -254,8 +262,9 @@ namespace UniversalDetector.Core charLen = 1; // return its order if it is hiragana - if (buf[offset] == HIRAGANA_FIRST_BYTE) { - byte low = buf[offset+1]; + if (buf[offset] == HIRAGANA_FIRST_BYTE) + { + byte low = buf[offset + 1]; if (low >= 0x9F && low <= 0xF1) return low - 0x9F; } @@ -265,8 +274,9 @@ namespace UniversalDetector.Core protected override int GetOrder(byte[] buf, int offset) { // We are only interested in Hiragana - if (buf[offset] == HIRAGANA_FIRST_BYTE) { - byte low = buf[offset+1]; + if (buf[offset] == HIRAGANA_FIRST_BYTE) + { + byte low = buf[offset + 1]; if (low >= 0x9F && low <= 0xF1) return low - 0x9F; } @@ -292,8 +302,9 @@ namespace UniversalDetector.Core charLen = 1; // return its order if it is hiragana - if (high == HIRAGANA_FIRST_BYTE) { - byte low = buf[offset+1]; + if (high == HIRAGANA_FIRST_BYTE) + { + byte low = buf[offset + 1]; if (low >= 0xA1 && low <= 0xF3) return low - 0xA1; } @@ -303,8 +314,9 @@ namespace UniversalDetector.Core protected override int GetOrder(byte[] buf, int offset) { // We are only interested in Hiragana - if (buf[offset] == HIRAGANA_FIRST_BYTE) { - byte low = buf[offset+1]; + if (buf[offset] == HIRAGANA_FIRST_BYTE) + { + byte low = buf[offset + 1]; if (low >= 0xA1 && low <= 0xF3) return low - 0xA1; } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs index 5d57e30e1f..11ce90c874 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -135,12 +134,14 @@ namespace UniversalDetector.Core byte[] newbuf = FilterWithEnglishLetters(buf, offset, len); byte charClass, freq; - for (int i = 0; i < newbuf.Length; i++) { + for (int i = 0; i < newbuf.Length; i++) + { charClass = Latin1_CharToClass[newbuf[i]]; freq = Latin1ClassModel[lastCharClass * CLASS_NUM + charClass]; - if (freq == 0) { - state = ProbingState.NotMe; - break; + if (freq == 0) + { + state = ProbingState.NotMe; + break; } freqCounter[freq]++; lastCharClass = charClass; @@ -155,13 +156,17 @@ namespace UniversalDetector.Core float confidence = 0.0f; int total = 0; - for (int i = 0; i < FREQ_CAT_NUM; i++) { + for (int i = 0; i < FREQ_CAT_NUM; i++) + { total += freqCounter[i]; } - if (total <= 0) { + if (total <= 0) + { confidence = 0.0f; - } else { + } + else + { confidence = freqCounter[3] * 1.0f / total; confidence -= freqCounter[1] * 20.0f / total; } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs index b4f6928a46..b23e499c37 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -67,7 +66,8 @@ namespace UniversalDetector.Core public override string GetCharsetName() { - if (bestGuess == -1) { + if (bestGuess == -1) + { GetConfidence(); if (bestGuess == -1) bestGuess = 0; @@ -78,13 +78,17 @@ namespace UniversalDetector.Core public override void Reset() { activeNum = 0; - for (int i = 0; i < probers.Length; i++) { - if (probers[i] != null) { - probers[i].Reset(); - isActive[i] = true; - ++activeNum; - } else { - isActive[i] = false; + for (int i = 0; i < probers.Length; i++) + { + if (probers[i] != null) + { + probers[i].Reset(); + isActive[i] = true; + ++activeNum; + } + else + { + isActive[i] = false; } } bestGuess = -1; @@ -100,33 +104,43 @@ namespace UniversalDetector.Core bool keepNext = true; int max = offset + len; - for (int i = offset; i < max; i++) { - if ((buf[i] & 0x80) != 0) { + for (int i = offset; i < max; i++) + { + if ((buf[i] & 0x80) != 0) + { highbyteBuf[hptr++] = buf[i]; keepNext = true; - } else { + } + else + { //if previous is highbyte, keep this even it is a ASCII - if (keepNext) { + if (keepNext) + { highbyteBuf[hptr++] = buf[i]; keepNext = false; } } } - ProbingState st = ProbingState.NotMe; + var st = ProbingState.NotMe; - for (int i = 0; i < probers.Length; i++) { + for (int i = 0; i < probers.Length; i++) + { if (!isActive[i]) continue; st = probers[i].HandleData(highbyteBuf, 0, hptr); - if (st == ProbingState.FoundIt) { + if (st == ProbingState.FoundIt) + { bestGuess = i; state = ProbingState.FoundIt; break; - } else if (st == ProbingState.NotMe) { + } + else if (st == ProbingState.NotMe) + { isActive[i] = false; activeNum--; - if (activeNum <= 0) { + if (activeNum <= 0) + { state = ProbingState.NotMe; break; } @@ -140,16 +154,23 @@ namespace UniversalDetector.Core float bestConf = 0.0f; float cf = 0.0f; - if (state == ProbingState.FoundIt) { + if (state == ProbingState.FoundIt) + { return 0.99f; - } else if (state == ProbingState.NotMe) { + } + else if (state == ProbingState.NotMe) + { return 0.01f; - } else { - for (int i = 0; i < PROBERS_NUM; i++) { + } + else + { + for (int i = 0; i < PROBERS_NUM; i++) + { if (!isActive[i]) continue; cf = probers[i].GetConfidence(); - if (bestConf < cf) { + if (bestConf < cf) + { bestConf = cf; bestGuess = i; } @@ -162,10 +183,14 @@ namespace UniversalDetector.Core { float cf; GetConfidence(); - for (int i = 0; i < PROBERS_NUM; i++) { - if (!isActive[i]) { + for (int i = 0; i < PROBERS_NUM; i++) + { + if (!isActive[i]) + { //Console.WriteLine(" MBCS inactive: {0} (confidence is too low).", ProberName[i]); - } else { + } + else + { cf = probers[i].GetConfidence(); //Console.WriteLine(" MBCS {0}: [{1}]", cf, ProberName[i]); } diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs index 65e04292ab..b753401668 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs @@ -174,7 +174,7 @@ namespace UniversalDetector.Core // it is used for frequency analysis only, and we are validating // each code range there as well. So it is safe to set it to be // 2 here. - private readonly static int[] GB18030CharLenTable = {0, 1, 1, 1, 1, 1, 2}; + private readonly static int[] GB18030CharLenTable = { 0, 1, 1, 1, 1, 1, 2 }; public GB18030SMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, @@ -235,7 +235,7 @@ namespace UniversalDetector.Core BitPackage.Pack4bits(ERROR,START,START,START,START,START,START,START) //10-17 }; - private readonly static int[] BIG5CharLenTable = {0, 1, 1, 2, 0}; + private readonly static int[] BIG5CharLenTable = { 0, 1, 1, 2, 0 }; public BIG5SMModel() : base( new BitPackage(BitPackage.INDEX_SHIFT_4BITS, diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs index 640b19c4a4..cdbc168915 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -60,7 +59,7 @@ namespace UniversalDetector.Core probers[7] = new SingleByteCharSetProber(new Win1253Model()); probers[8] = new SingleByteCharSetProber(new Latin5BulgarianModel()); probers[9] = new SingleByteCharSetProber(new Win1251BulgarianModel()); - HebrewProber hebprober = new HebrewProber(); + var hebprober = new HebrewProber(); probers[10] = hebprober; // Logical probers[11] = new SingleByteCharSetProber(new Win1255Model(), false, hebprober); @@ -76,7 +75,7 @@ namespace UniversalDetector.Core public override ProbingState HandleData(byte[] buf, int offset, int len) { - ProbingState st = ProbingState.NotMe; + var st = ProbingState.NotMe; //apply filter to original buffer, and we got new buffer back //depend on what script it is, we will feed them the new buffer @@ -88,19 +87,24 @@ namespace UniversalDetector.Core if (newBuf.Length == 0) return state; // Nothing to see here, move on. - for (int i = 0; i < PROBERS_NUM; i++) { + for (int i = 0; i < PROBERS_NUM; i++) + { if (!isActive[i]) continue; st = probers[i].HandleData(newBuf, 0, newBuf.Length); - if (st == ProbingState.FoundIt) { + if (st == ProbingState.FoundIt) + { bestGuess = i; state = ProbingState.FoundIt; break; - } else if (st == ProbingState.NotMe) { + } + else if (st == ProbingState.NotMe) + { isActive[i] = false; activeNum--; - if (activeNum <= 0) { + if (activeNum <= 0) + { state = ProbingState.NotMe; break; } @@ -112,24 +116,25 @@ namespace UniversalDetector.Core public override float GetConfidence() { float bestConf = 0.0f, cf; - switch (state) { - case ProbingState.FoundIt: - return 0.99f; //sure yes - case ProbingState.NotMe: - return 0.01f; //sure no - default: - for (int i = 0; i < PROBERS_NUM; i++) - { - if (!isActive[i]) - continue; - cf = probers[i].GetConfidence(); - if (bestConf < cf) + switch (state) + { + case ProbingState.FoundIt: + return 0.99f; //sure yes + case ProbingState.NotMe: + return 0.01f; //sure no + default: + for (int i = 0; i < PROBERS_NUM; i++) { - bestConf = cf; - bestGuess = i; + if (!isActive[i]) + continue; + cf = probers[i].GetConfidence(); + if (bestConf < cf) + { + bestConf = cf; + bestGuess = i; + } } - } - break; + break; } return bestConf; } @@ -137,8 +142,9 @@ namespace UniversalDetector.Core public override void DumpStatus() { float cf = GetConfidence(); - // Console.WriteLine(" SBCS Group Prober --------begin status"); - for (int i = 0; i < PROBERS_NUM; i++) { + // Console.WriteLine(" SBCS Group Prober --------begin status"); + for (int i = 0; i < PROBERS_NUM; i++) + { if (isActive[i]) probers[i].DumpStatus(); //else @@ -148,15 +154,19 @@ namespace UniversalDetector.Core //Console.WriteLine(" SBCS Group found best match [{0}] confidence {1}.", probers[bestGuess].GetCharsetName(), cf); } - public override void Reset () + public override void Reset() { int activeNum = 0; - for (int i = 0; i < PROBERS_NUM; i++) { - if (probers[i] != null) { + for (int i = 0; i < PROBERS_NUM; i++) + { + if (probers[i] != null) + { probers[i].Reset(); isActive[i] = true; activeNum++; - } else { + } + else + { isActive[i] = false; } } @@ -167,7 +177,8 @@ namespace UniversalDetector.Core public override string GetCharsetName() { //if we have no answer yet - if (bestGuess == -1) { + if (bestGuess == -1) + { GetConfidence(); //no charset seems positive if (bestGuess == -1) diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs index 65c0f8ca81..b87ac21703 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -49,7 +48,7 @@ namespace UniversalDetector.Core private const float NEGATIVE_SHORTCUT_THRESHOLD = 0.05f; private const int SYMBOL_CAT_ORDER = 250; private const int NUMBER_OF_SEQ_CAT = 4; - private const int POSITIVE_CAT = NUMBER_OF_SEQ_CAT-1; + private const int POSITIVE_CAT = NUMBER_OF_SEQ_CAT - 1; private const int NEGATIVE_CAT = 0; protected SequenceModel model; @@ -89,28 +88,33 @@ namespace UniversalDetector.Core { int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { byte order = model.GetOrder(buf[i]); if (order < SYMBOL_CAT_ORDER) totalChar++; - if (order < SAMPLE_SIZE) { + if (order < SAMPLE_SIZE) + { freqChar++; - if (lastOrder < SAMPLE_SIZE) { + if (lastOrder < SAMPLE_SIZE) + { totalSeqs++; if (!reversed) - ++(seqCounters[model.GetPrecedence(lastOrder*SAMPLE_SIZE+order)]); + ++(seqCounters[model.GetPrecedence(lastOrder * SAMPLE_SIZE + order)]); else // reverse the order of the letters in the lookup - ++(seqCounters[model.GetPrecedence(order*SAMPLE_SIZE+lastOrder)]); + ++(seqCounters[model.GetPrecedence(order * SAMPLE_SIZE + lastOrder)]); } } lastOrder = order; } - if (state == ProbingState.Detecting) { - if (totalSeqs > SB_ENOUGH_REL_THRESHOLD) { + if (state == ProbingState.Detecting) + { + if (totalSeqs > SB_ENOUGH_REL_THRESHOLD) + { float cf = GetConfidence(); if (cf > POSITIVE_SHORTCUT_THRESHOLD) state = ProbingState.FoundIt; @@ -139,7 +143,8 @@ namespace UniversalDetector.Core // POSITIVE_APPROACH float r = 0.0f; - if (totalSeqs > 0) { + if (totalSeqs > 0) + { r = 1.0f * seqCounters[POSITIVE_CAT] / totalSeqs / model.TypicalPositiveRatio; r = r * freqChar / totalChar; if (r >= 1.0f) diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs index e1fbb873e4..d01a683bc9 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs @@ -69,29 +69,36 @@ namespace UniversalDetector.Core int codingState; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { int charLen = codingSM.CurrentCharLen; - if (i == offset) { + if (i == offset) + { lastChar[1] = buf[offset]; - contextAnalyser.HandleOneChar(lastChar, 2-charLen, charLen); + contextAnalyser.HandleOneChar(lastChar, 2 - charLen, charLen); distributionAnalyser.HandleOneChar(lastChar, 0, charLen); - } else { - contextAnalyser.HandleOneChar(buf, i+1-charLen, charLen); - distributionAnalyser.HandleOneChar(buf, i-1, charLen); + } + else + { + contextAnalyser.HandleOneChar(buf, i + 1 - charLen, charLen); + distributionAnalyser.HandleOneChar(buf, i - 1, charLen); } } } - lastChar[0] = buf[max-1]; + lastChar[0] = buf[max - 1]; if (state == ProbingState.Detecting) if (contextAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD) state = ProbingState.FoundIt; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs index cb2f201aad..f11b01e211 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -54,7 +53,7 @@ namespace UniversalDetector.Core public int[] charLenTable; private string name; - + public string Name => name; private int classFactor; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs index b813dda768..3d5ce5e131 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs @@ -36,7 +36,6 @@ * * ***** END LICENSE BLOCK ***** */ -using System; namespace UniversalDetector.Core { @@ -51,12 +50,12 @@ namespace UniversalDetector.Core // freqSeqs / totalSeqs protected float typicalPositiveRatio; - + public float TypicalPositiveRatio => typicalPositiveRatio; - // not used + // not used protected bool keepEnglishLetter; - + public bool KeepEnglishLetter => keepEnglishLetter; protected string charsetName; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs index a469e2a0c6..2a625576f2 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs @@ -51,7 +51,8 @@ namespace UniversalDetector.Core Reset(); } - public override string GetCharsetName() { + public override string GetCharsetName() + { return "UTF-8"; } @@ -67,21 +68,25 @@ namespace UniversalDetector.Core int codingState = SMModel.START; int max = offset + len; - for (int i = offset; i < max; i++) { + for (int i = offset; i < max; i++) + { codingState = codingSM.NextState(buf[i]); - if (codingState == SMModel.ERROR) { + if (codingState == SMModel.ERROR) + { state = ProbingState.NotMe; break; } - if (codingState == SMModel.ITSME) { + if (codingState == SMModel.ITSME) + { state = ProbingState.FoundIt; break; } - if (codingState == SMModel.START) { + if (codingState == SMModel.START) + { if (codingSM.CurrentCharLen >= 2) numOfMBChar++; } @@ -98,11 +103,14 @@ namespace UniversalDetector.Core float unlike = 0.99f; float confidence = 0.0f; - if (numOfMBChar < 6) { + if (numOfMBChar < 6) + { for (int i = 0; i < numOfMBChar; i++) unlike *= ONE_CHAR_PROB; confidence = 1.0f - unlike; - } else { + } + else + { confidence = 0.99f; } return confidence; diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs index 4dcb282cc9..812a9a7931 100644 --- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs +++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs @@ -39,7 +39,7 @@ namespace UniversalDetector.Core { - enum InputState { PureASCII=0, EscASCII=1, Highbyte=2 }; + enum InputState { PureASCII = 0, EscASCII = 1, Highbyte = 2 }; public abstract class UniversalDetector { @@ -70,7 +70,8 @@ namespace UniversalDetector.Core protected CharsetProber escCharsetProber; protected string detectedCharset; - public UniversalDetector(int languageFilter) { + public UniversalDetector(int languageFilter) + { this.start = true; this.inputState = InputState.PureASCII; this.lastChar = 0x00; @@ -80,7 +81,8 @@ namespace UniversalDetector.Core public virtual void Feed(byte[] buf, int offset, int len) { - if (done) { + if (done) + { return; } @@ -88,52 +90,60 @@ namespace UniversalDetector.Core gotData = true; // If the data starts with BOM, we know it is UTF - if (start) { + if (start) + { start = false; - if (len > 3) { - switch (buf[0]) { - case 0xEF: - if (0xBB == buf[1] && 0xBF == buf[2]) - detectedCharset = "UTF-8"; - break; - case 0xFE: - if (0xFF == buf[1] && 0x00 == buf[2] && 0x00 == buf[3]) - // FE FF 00 00 UCS-4, unusual octet order BOM (3412) - detectedCharset = "X-ISO-10646-UCS-4-3412"; - else if (0xFF == buf[1]) - detectedCharset = "UTF-16BE"; - break; - case 0x00: - if (0x00 == buf[1] && 0xFE == buf[2] && 0xFF == buf[3]) - detectedCharset = "UTF-32BE"; - else if (0x00 == buf[1] && 0xFF == buf[2] && 0xFE == buf[3]) - // 00 00 FF FE UCS-4, unusual octet order BOM (2143) - detectedCharset = "X-ISO-10646-UCS-4-2143"; - break; - case 0xFF: - if (0xFE == buf[1] && 0x00 == buf[2] && 0x00 == buf[3]) - detectedCharset = "UTF-32LE"; - else if (0xFE == buf[1]) - detectedCharset = "UTF-16LE"; - break; + if (len > 3) + { + switch (buf[0]) + { + case 0xEF: + if (0xBB == buf[1] && 0xBF == buf[2]) + detectedCharset = "UTF-8"; + break; + case 0xFE: + if (0xFF == buf[1] && 0x00 == buf[2] && 0x00 == buf[3]) + // FE FF 00 00 UCS-4, unusual octet order BOM (3412) + detectedCharset = "X-ISO-10646-UCS-4-3412"; + else if (0xFF == buf[1]) + detectedCharset = "UTF-16BE"; + break; + case 0x00: + if (0x00 == buf[1] && 0xFE == buf[2] && 0xFF == buf[3]) + detectedCharset = "UTF-32BE"; + else if (0x00 == buf[1] && 0xFF == buf[2] && 0xFE == buf[3]) + // 00 00 FF FE UCS-4, unusual octet order BOM (2143) + detectedCharset = "X-ISO-10646-UCS-4-2143"; + break; + case 0xFF: + if (0xFE == buf[1] && 0x00 == buf[2] && 0x00 == buf[3]) + detectedCharset = "UTF-32LE"; + else if (0xFE == buf[1]) + detectedCharset = "UTF-16LE"; + break; } // switch } - if (detectedCharset != null) { + if (detectedCharset != null) + { done = true; return; } } - for (int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) + { // other than 0xa0, if every other character is ascii, the page is ascii - if ((buf[i] & 0x80) != 0 && buf[i] != 0xA0) { + if ((buf[i] & 0x80) != 0 && buf[i] != 0xA0) + { // we got a non-ascii byte (high-byte) - if (inputState != InputState.Highbyte) { + if (inputState != InputState.Highbyte) + { inputState = InputState.Highbyte; // kill EscCharsetProber if it is active - if (escCharsetProber != null) { + if (escCharsetProber != null) + { escCharsetProber = null; } @@ -145,9 +155,12 @@ namespace UniversalDetector.Core if (charsetProbers[2] == null) charsetProbers[2] = new Latin1Prober(); } - } else { + } + else + { if (inputState == InputState.PureASCII && - (buf[i] == 0x33 || (buf[i] == 0x7B && lastChar == 0x7E))) { + (buf[i] == 0x33 || (buf[i] == 0x7B && lastChar == 0x7E))) + { // found escape character or HZ "~{" inputState = InputState.EscASCII; } @@ -155,27 +168,33 @@ namespace UniversalDetector.Core } } - ProbingState st = ProbingState.NotMe; + var st = ProbingState.NotMe; - switch (inputState) { + switch (inputState) + { case InputState.EscASCII: - if (escCharsetProber == null) { + if (escCharsetProber == null) + { escCharsetProber = new EscCharsetProber(); } st = escCharsetProber.HandleData(buf, offset, len); - if (st == ProbingState.FoundIt) { + if (st == ProbingState.FoundIt) + { done = true; detectedCharset = escCharsetProber.GetCharsetName(); } break; case InputState.Highbyte: - for (int i = 0; i < PROBERS_NUM; i++) { - if (charsetProbers[i] != null) { + for (int i = 0; i < PROBERS_NUM; i++) + { + if (charsetProbers[i] != null) + { st = charsetProbers[i].HandleData(buf, offset, len); - #if DEBUG +#if DEBUG charsetProbers[i].DumpStatus(); - #endif - if (st == ProbingState.FoundIt) { +#endif + if (st == ProbingState.FoundIt) + { done = true; detectedCharset = charsetProbers[i].GetCharsetName(); return; @@ -195,38 +214,47 @@ namespace UniversalDetector.Core /// public virtual void DataEnd() { - if (!gotData) { + if (!gotData) + { // we haven't got any data yet, return immediately // caller program sometimes call DataEnd before anything has // been sent to detector return; } - if (detectedCharset != null) { + if (detectedCharset != null) + { done = true; Report(detectedCharset, 1.0f); return; } - if (inputState == InputState.Highbyte) { + if (inputState == InputState.Highbyte) + { float proberConfidence = 0.0f; float maxProberConfidence = 0.0f; int maxProber = 0; - for (int i = 0; i < PROBERS_NUM; i++) { - if (charsetProbers[i] != null) { + for (int i = 0; i < PROBERS_NUM; i++) + { + if (charsetProbers[i] != null) + { proberConfidence = charsetProbers[i].GetConfidence(); - if (proberConfidence > maxProberConfidence) { + if (proberConfidence > maxProberConfidence) + { maxProberConfidence = proberConfidence; maxProber = i; } } } - if (maxProberConfidence > MINIMUM_THRESHOLD) { + if (maxProberConfidence > MINIMUM_THRESHOLD) + { Report(charsetProbers[maxProber].GetCharsetName(), maxProberConfidence); } - } else if (inputState == InputState.PureASCII) { + } + else if (inputState == InputState.PureASCII) + { Report("ASCII", 1.0f); } } diff --git a/Emby.Server.Implementations/Threading/CommonTimer.cs b/Emby.Server.Implementations/Threading/CommonTimer.cs index 9451b07f32..5a05da564f 100644 --- a/Emby.Server.Implementations/Threading/CommonTimer.cs +++ b/Emby.Server.Implementations/Threading/CommonTimer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using MediaBrowser.Model.Threading; diff --git a/Emby.Server.Implementations/Threading/TimerFactory.cs b/Emby.Server.Implementations/Threading/TimerFactory.cs index 4ab6f6fc4c..ca50064c7a 100644 --- a/Emby.Server.Implementations/Threading/TimerFactory.cs +++ b/Emby.Server.Implementations/Threading/TimerFactory.cs @@ -1,4 +1,4 @@ -using System; +using System; using MediaBrowser.Model.Threading; namespace Emby.Server.Implementations.Threading diff --git a/Emby.Server.Implementations/Udp/UdpServer.cs b/Emby.Server.Implementations/Udp/UdpServer.cs index 7a59d95bf1..bd86c6cdc8 100644 --- a/Emby.Server.Implementations/Udp/UdpServer.cs +++ b/Emby.Server.Implementations/Udp/UdpServer.cs @@ -1,15 +1,15 @@ -using MediaBrowser.Controller; -using MediaBrowser.Model.ApiClient; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Controller; +using MediaBrowser.Model.ApiClient; using MediaBrowser.Model.Events; using MediaBrowser.Model.Net; +using MediaBrowser.Model.Serialization; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Udp { diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs index d4653281fc..6e69ecb56c 100644 --- a/Emby.Server.Implementations/Updates/InstallationManager.cs +++ b/Emby.Server.Implementations/Updates/InstallationManager.cs @@ -11,13 +11,13 @@ using MediaBrowser.Common.Net; using MediaBrowser.Common.Plugins; using MediaBrowser.Common.Progress; using MediaBrowser.Common.Updates; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Updates; -using MediaBrowser.Controller.Configuration; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.Updates { @@ -292,9 +292,7 @@ namespace Emby.Server.Implementations.Updates return true; } - Version requiredVersion; - - return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && currentServerVersion >= requiredVersion; + return Version.TryParse(packageVersionInfo.requiredVersionStr, out var requiredVersion) && currentServerVersion >= requiredVersion; } /// @@ -390,7 +388,7 @@ namespace Emby.Server.Implementations.Updates /// The progress. /// The cancellation token. /// Task. - /// package + /// package public async Task InstallPackage(PackageVersionInfo package, bool isPlugin, IProgress progress, CancellationToken cancellationToken) { if (package == null) @@ -601,7 +599,7 @@ namespace Emby.Server.Implementations.Updates /// Uninstalls a plugin /// /// The plugin. - /// + /// public void UninstallPlugin(IPlugin plugin) { plugin.OnUninstalling(); diff --git a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs index 2543fd3728..8788cfc263 100644 --- a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs +++ b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs @@ -1,23 +1,15 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; using System.IO; using System.Linq; -using System.Threading.Tasks; using Emby.Server.Implementations.Images; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.Collections; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.IO; -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Extensions; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.UserViews diff --git a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs index 95b2e65be2..937db3f23e 100644 --- a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -1,21 +1,19 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Emby.Server.Implementations.Images; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using Emby.Server.Implementations.Images; -using MediaBrowser.Controller.Dto; -using MediaBrowser.Model.IO; -using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; namespace Emby.Server.Implementations.UserViews { diff --git a/Emby.Server.Implementations/UserViews/FolderImageProvider.cs b/Emby.Server.Implementations/UserViews/FolderImageProvider.cs index 057d22aece..7629f6039f 100644 --- a/Emby.Server.Implementations/UserViews/FolderImageProvider.cs +++ b/Emby.Server.Implementations/UserViews/FolderImageProvider.cs @@ -1,18 +1,15 @@ -using MediaBrowser.Common.Configuration; +using System.Collections.Generic; +using Emby.Server.Implementations.Images; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.Audio; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Emby.Server.Implementations.Images; -using MediaBrowser.Model.IO; using MediaBrowser.Model.Entities; -using MediaBrowser.Controller.Entities.Audio; -using MediaBrowser.Model.Dto; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Dto; namespace Emby.Server.Implementations.Photos { diff --git a/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs index 0f4e8af3c6..308922e6d1 100644 --- a/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs +++ b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs @@ -1,4 +1,4 @@ -using System.Xml; +using System.Xml; using MediaBrowser.Model.Xml; namespace Emby.Server.Implementations.Xml diff --git a/Emby.XmlTv/Emby.XmlTv.Console/Classes/EntityExtensions.cs b/Emby.XmlTv/Emby.XmlTv.Console/Classes/EntityExtensions.cs index 37fcf0ecad..96e508f122 100644 --- a/Emby.XmlTv/Emby.XmlTv.Console/Classes/EntityExtensions.cs +++ b/Emby.XmlTv/Emby.XmlTv.Console/Classes/EntityExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Text; diff --git a/Emby.XmlTv/Emby.XmlTv.Console/Emby.XmlTv.Console.csproj b/Emby.XmlTv/Emby.XmlTv.Console/Emby.XmlTv.Console.csproj index 6ce4cff2ce..c10b28e824 100644 --- a/Emby.XmlTv/Emby.XmlTv.Console/Emby.XmlTv.Console.csproj +++ b/Emby.XmlTv/Emby.XmlTv.Console/Emby.XmlTv.Console.csproj @@ -1,4 +1,4 @@ - + diff --git a/Emby.XmlTv/Emby.XmlTv.Console/Program.cs b/Emby.XmlTv/Emby.XmlTv.Console/Program.cs index e72d94bf56..3e0c7d1254 100644 --- a/Emby.XmlTv/Emby.XmlTv.Console/Program.cs +++ b/Emby.XmlTv/Emby.XmlTv.Console/Program.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Diagnostics; using System.IO; using System.Linq; @@ -100,4 +100,4 @@ namespace Emby.XmlTv.Console return count; } } -} \ No newline at end of file +} diff --git a/Emby.XmlTv/Emby.XmlTv.Console/Properties/AssemblyInfo.cs b/Emby.XmlTv/Emby.XmlTv.Console/Properties/AssemblyInfo.cs index 4178a27a1e..ff59f890fd 100644 --- a/Emby.XmlTv/Emby.XmlTv.Console/Properties/AssemblyInfo.cs +++ b/Emby.XmlTv/Emby.XmlTv.Console/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj b/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj index 7ffb30b93d..d7c4ad0b72 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj +++ b/Emby.XmlTv/Emby.XmlTv.Test/Emby.XmlTv.Test.csproj @@ -1,5 +1,6 @@ - - + + Debug AnyCPU @@ -109,15 +110,15 @@ - - - netstandard2.0 - false - + + netstandard2.0 + false + diff --git a/Emby.XmlTv/Emby.XmlTv.Test/Properties/AssemblyInfo.cs b/Emby.XmlTv/Emby.XmlTv.Test/Properties/AssemblyInfo.cs index e79fda8a89..9028603635 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/Properties/AssemblyInfo.cs +++ b/Emby.XmlTv/Emby.XmlTv.Test/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; diff --git a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderDateTimeTests.cs b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderDateTimeTests.cs index 2e4516be56..857cc339c0 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderDateTimeTests.cs +++ b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderDateTimeTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using Emby.XmlTv.Classes; diff --git a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderLanguageTests.cs b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderLanguageTests.cs index 77dabe13e3..32a0431d28 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderLanguageTests.cs +++ b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderLanguageTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using System.Threading; diff --git a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderTests.cs b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderTests.cs index 1485cf06c2..b1dffc59cd 100644 --- a/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderTests.cs +++ b/Emby.XmlTv/Emby.XmlTv.Test/XmlTvReaderTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using System.Threading; diff --git a/Emby.XmlTv/Emby.XmlTv.sln b/Emby.XmlTv/Emby.XmlTv.sln index 519cbfc9db..8243d4b72b 100644 --- a/Emby.XmlTv/Emby.XmlTv.sln +++ b/Emby.XmlTv/Emby.XmlTv.sln @@ -1,4 +1,4 @@ - + Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.24720.0 diff --git a/Emby.XmlTv/Emby.XmlTv/Classes/XmlTvReader.cs b/Emby.XmlTv/Emby.XmlTv/Classes/XmlTvReader.cs index aa48406649..52e58ed8da 100644 --- a/Emby.XmlTv/Emby.XmlTv/Classes/XmlTvReader.cs +++ b/Emby.XmlTv/Emby.XmlTv/Classes/XmlTvReader.cs @@ -34,7 +34,7 @@ namespace Emby.XmlTv.Classes private static XmlReader CreateXmlTextReader(string path) { - XmlReaderSettings settings = new XmlReaderSettings(); + var settings = new XmlReaderSettings(); // https://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.xmlresolver(v=vs.110).aspx // Looks like we don't need this anyway? @@ -140,8 +140,7 @@ namespace Emby.XmlTv.Classes private void SetChannelNumber(XmlTvChannel channel, string value) { value = value.Replace("-", "."); - double number; - if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out number)) + if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var number)) { channel.Number = value; } @@ -426,8 +425,7 @@ namespace Emby.XmlTv.Classes if (textValue.Contains("/")) { var components = textValue.Split('/'); - float value; - if (float.TryParse(components[0], out value)) + if (float.TryParse(components[0], out var value)) { result.StarRating = value; } @@ -1053,8 +1051,7 @@ namespace Emby.XmlTv.Classes } var standardDate = string.Format("{0} {1}", dateComponent, dateOffset); - DateTimeOffset parsedDateTime; - if (DateTimeOffset.TryParseExact(standardDate, "yyyyMMddHHmmss zzz", CultureInfo.CurrentCulture, DateTimeStyles.None, out parsedDateTime)) + if (DateTimeOffset.TryParseExact(standardDate, "yyyyMMddHHmmss zzz", CultureInfo.CurrentCulture, DateTimeStyles.None, out var parsedDateTime)) { return parsedDateTime.ToUniversalTime(); } diff --git a/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj b/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj index 41dd9dd977..baa522ee3e 100644 --- a/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj +++ b/Emby.XmlTv/Emby.XmlTv/Emby.XmlTv.csproj @@ -1,4 +1,3 @@ - diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvChannel.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvChannel.cs index 2240fd9d46..2673d711c6 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvChannel.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvChannel.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Text; namespace Emby.XmlTv.Entities @@ -47,4 +47,4 @@ namespace Emby.XmlTv.Entities return builder.ToString(); } } -} \ No newline at end of file +} diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCredit.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCredit.cs index 0077a3e6e4..d959ce76ff 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCredit.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCredit.cs @@ -1,5 +1,3 @@ -using System; - namespace Emby.XmlTv.Entities { public class XmlTvCredit diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCreditType.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCreditType.cs index e54f243462..31c7f5e440 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCreditType.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvCreditType.cs @@ -1,4 +1,4 @@ -namespace Emby.XmlTv.Entities +namespace Emby.XmlTv.Entities { public enum XmlTvCreditType { @@ -14,4 +14,4 @@ Commentator, Guest } -} \ No newline at end of file +} diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvEpisode.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvEpisode.cs index de84ab5ba2..47525b57ca 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvEpisode.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvEpisode.cs @@ -1,4 +1,3 @@ -using System; using System.Text; namespace Emby.XmlTv.Entities diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvIcon.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvIcon.cs index 3417a717b2..77ef8d5fd0 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvIcon.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvIcon.cs @@ -1,4 +1,3 @@ -using System; using System.Text; namespace Emby.XmlTv.Entities diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvLanguage.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvLanguage.cs index fea387244a..0fd5573cd4 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvLanguage.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvLanguage.cs @@ -1,5 +1,3 @@ -using System; - namespace Emby.XmlTv.Entities { public class XmlTvLanguage diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvPremiere.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvPremiere.cs index 6b7e490552..a1920bc779 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvPremiere.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvPremiere.cs @@ -1,9 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - namespace Emby.XmlTv.Entities { public class XmlTvPremiere diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvProgram.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvProgram.cs index b6614afc15..1725e17d70 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvProgram.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvProgram.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; diff --git a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvRating.cs b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvRating.cs index 381294e7e1..e37113d7ab 100644 --- a/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvRating.cs +++ b/Emby.XmlTv/Emby.XmlTv/Entities/XmlTvRating.cs @@ -1,4 +1,3 @@ -using System; using System.Text; namespace Emby.XmlTv.Entities diff --git a/Emby.XmlTv/Emby.XmlTv/XmlTvSchema.dtd b/Emby.XmlTv/Emby.XmlTv/XmlTvSchema.dtd index f723eadc0e..889939224a 100644 --- a/Emby.XmlTv/Emby.XmlTv/XmlTvSchema.dtd +++ b/Emby.XmlTv/Emby.XmlTv/XmlTvSchema.dtd @@ -1,4 +1,4 @@ - - \ No newline at end of file + diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs index dde9f2fe2c..b69faab116 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/AssParserTests.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using MediaBrowser.MediaEncoding.Subtitles; using MediaBrowser.Model.MediaInfo; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -83,4 +83,4 @@ namespace MediaBrowser.Tests.MediaEncoding.Subtitles { } } -} \ No newline at end of file +} diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs index f991034388..aae96b382a 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Threading; using Emby.Server.MediaEncoding.Subtitles; diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs index d9e48ac06c..2d25bcb14e 100644 --- a/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/VttWriterTest.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Threading; using Emby.Server.MediaEncoding.Subtitles; @@ -102,4 +102,4 @@ namespace MediaBrowser.Tests.MediaEncoding.Subtitles { Assert.AreEqual(expectedText, result); } } -} \ No newline at end of file +} diff --git a/MediaBrowser.Tests/Properties/AssemblyInfo.cs b/MediaBrowser.Tests/Properties/AssemblyInfo.cs index 700b2f5088..9bc2a19f21 100644 --- a/MediaBrowser.Tests/Properties/AssemblyInfo.cs +++ b/MediaBrowser.Tests/Properties/AssemblyInfo.cs @@ -1,4 +1,5 @@ using System.Reflection; +using System.Resources; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following @@ -7,29 +8,16 @@ using System.Runtime.InteropServices; [assembly: AssemblyTitle("MediaBrowser.Tests")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("MediaBrowser.Tests")] -[assembly: AssemblyCopyright("Copyright 2013")] +[assembly: AssemblyCompany("Jellyfin Project")] +[assembly: AssemblyProduct("Jellyfin: The Free Software Media System")] +[assembly: AssemblyCopyright("Copyright © 2019 Jellyfin Contributors. Code released under the GNU General Public License Version 2")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] +[assembly: NeutralResourcesLanguage("en")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("42408c2b-9c5d-4541-ac3f-3fe389b760ed")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs b/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs index 4cb2444da5..b8f9e09b5e 100644 --- a/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs +++ b/MediaBrowser.WebDashboard/Api/ConfigurationPageInfo.cs @@ -1,4 +1,4 @@ -using MediaBrowser.Common.Plugins; +using MediaBrowser.Common.Plugins; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Plugins; diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index ef4f9c2af8..53a4146490 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -1,23 +1,22 @@ -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Net; -using MediaBrowser.Controller.Plugins; -using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Plugins; -using MediaBrowser.Model.IO; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.Net; using MediaBrowser.Model.Plugins; using MediaBrowser.Model.Reflection; +using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Services; +using Microsoft.Extensions.Logging; namespace MediaBrowser.WebDashboard.Api { diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 88fb95936a..2d0e0e1880 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -1,17 +1,13 @@ -using MediaBrowser.Controller.Configuration; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; -using MediaBrowser.Controller.Net; -using MediaBrowser.Model.Globalization; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Extensions; using MediaBrowser.Controller; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Model.IO; +using Microsoft.Extensions.Logging; namespace MediaBrowser.WebDashboard.Api { diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index c5367ba753..c099e77d65 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -1,23 +1,23 @@ - - - - - - - - - - - - - - PreserveNewest - - - - - netstandard2.0 - false - - - + + + + + + + + + + + + + + PreserveNewest + + + + + netstandard2.0 + false + + + diff --git a/MediaBrowser.WebDashboard/ServerEntryPoint.cs b/MediaBrowser.WebDashboard/ServerEntryPoint.cs index 9bf87ac0bc..221fa62c79 100644 --- a/MediaBrowser.WebDashboard/ServerEntryPoint.cs +++ b/MediaBrowser.WebDashboard/ServerEntryPoint.cs @@ -1,8 +1,7 @@ -using System; -using MediaBrowser.Common; -using MediaBrowser.Controller.Plugins; using System.Collections.Generic; using System.Linq; +using MediaBrowser.Common; +using MediaBrowser.Controller.Plugins; namespace MediaBrowser.WebDashboard { diff --git a/MediaBrowser.XbmcMetadata/Configuration/NfoOptions.cs b/MediaBrowser.XbmcMetadata/Configuration/NfoOptions.cs index d0e2dbc6df..f631439de3 100644 --- a/MediaBrowser.XbmcMetadata/Configuration/NfoOptions.cs +++ b/MediaBrowser.XbmcMetadata/Configuration/NfoOptions.cs @@ -1,6 +1,6 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.Configuration; using System.Collections.Generic; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Model.Configuration; namespace MediaBrowser.XbmcMetadata.Configuration { diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs index dac3f49676..37a1d4c350 100644 --- a/MediaBrowser.XbmcMetadata/EntryPoint.cs +++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs @@ -1,13 +1,13 @@ -using MediaBrowser.Common.Configuration; +using System; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; using MediaBrowser.XbmcMetadata.Configuration; using MediaBrowser.XbmcMetadata.Savers; -using System; +using Microsoft.Extensions.Logging; namespace MediaBrowser.XbmcMetadata { diff --git a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj index 5ffaaed276..ba29c656bf 100644 --- a/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj +++ b/MediaBrowser.XbmcMetadata/MediaBrowser.XbmcMetadata.csproj @@ -1,4 +1,4 @@ - + diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 5390f50495..5132967454 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -1,11 +1,3 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Extensions; -using Microsoft.Extensions.Logging; -using MediaBrowser.XbmcMetadata.Configuration; -using MediaBrowser.XbmcMetadata.Savers; using System; using System.Collections.Generic; using System.Globalization; @@ -15,9 +7,17 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Xml; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Extensions; using MediaBrowser.Model.IO; using MediaBrowser.Model.Xml; +using MediaBrowser.XbmcMetadata.Configuration; +using MediaBrowser.XbmcMetadata.Savers; +using Microsoft.Extensions.Logging; namespace MediaBrowser.XbmcMetadata.Parsers { @@ -54,7 +54,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers /// The item. /// The metadata file. /// The cancellation token. - /// + /// /// public void Fetch(MetadataResult item, string metadataFile, CancellationToken cancellationToken) { @@ -95,10 +95,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers Fetch(item, metadataFile, settings, cancellationToken); } - protected virtual bool SupportsUrlAfterClosingXmlTag - { - get { return false; } - } + protected virtual bool SupportsUrlAfterClosingXmlTag => false; /// /// Fetches the specified item. @@ -223,15 +220,12 @@ namespace MediaBrowser.XbmcMetadata.Parsers } } - protected virtual string MovieDbParserSearchString - { - get { return "themoviedb.org/movie/"; } - } + protected virtual string MovieDbParserSearchString => "themoviedb.org/movie/"; protected void ParseProviderLinks(T item, string xml) { //Look for a match for the Regex pattern "tt" followed by 7 digits - Match m = Regex.Match(xml, @"tt([0-9]{7})", RegexOptions.IgnoreCase); + var m = Regex.Match(xml, @"tt([0-9]{7})", RegexOptions.IgnoreCase); if (m.Success) { item.SetProviderId(MetadataProviders.Imdb, m.Value); @@ -245,8 +239,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (index != -1) { var tmdbId = xml.Substring(index + srch.Length).TrimEnd('/').Split('-')[0]; - int value; - if (!string.IsNullOrWhiteSpace(tmdbId) && int.TryParse(tmdbId, NumberStyles.Integer, CultureInfo.InvariantCulture, out value)) + if (!string.IsNullOrWhiteSpace(tmdbId) && int.TryParse(tmdbId, NumberStyles.Integer, CultureInfo.InvariantCulture, out var value)) { item.SetProviderId(MetadataProviders.Tmdb, value.ToString(_usCulture)); } @@ -261,8 +254,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (index != -1) { var tvdbId = xml.Substring(index + srch.Length).TrimEnd('/'); - int value; - if (!string.IsNullOrWhiteSpace(tvdbId) && int.TryParse(tvdbId, NumberStyles.Integer, CultureInfo.InvariantCulture, out value)) + if (!string.IsNullOrWhiteSpace(tvdbId) && int.TryParse(tvdbId, NumberStyles.Integer, CultureInfo.InvariantCulture, out var value)) { item.SetProviderId(MetadataProviders.Tvdb, value.ToString(_usCulture)); } @@ -283,8 +275,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - DateTime added; - if (DateTime.TryParseExact(val, BaseNfoSaver.DateAddedFormat, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out added)) + if (DateTime.TryParseExact(val, BaseNfoSaver.DateAddedFormat, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out var added)) { item.DateCreated = added.ToUniversalTime(); } @@ -322,8 +313,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrEmpty(text)) { - float value; - if (float.TryParse(text, NumberStyles.Any, _usCulture, out value)) + if (float.TryParse(text, NumberStyles.Any, _usCulture, out var value)) { item.CriticRating = value; } @@ -383,9 +373,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers { item.LockedFields = val.Split('|').Select(i => { - MetadataFields field; - - if (Enum.TryParse(i, true, out field)) + if (Enum.TryParse(i, true, out MetadataFields field)) { return (MetadataFields?)field; } @@ -451,8 +439,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(text)) { - int runtime; - if (int.TryParse(text.Split(' ')[0], NumberStyles.Integer, _usCulture, out runtime)) + if (int.TryParse(text.Split(' ')[0], NumberStyles.Integer, _usCulture, out var runtime)) { item.RunTimeTicks = TimeSpan.FromMinutes(runtime).Ticks; } @@ -605,8 +592,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int productionYear; - if (int.TryParse(val, out productionYear) && productionYear > 1850) + if (int.TryParse(val, out var productionYear) && productionYear > 1850) { item.ProductionYear = productionYear; } @@ -622,9 +608,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(rating)) { - float val; // All external meta is saving this as '.' for decimal I believe...but just to be sure - if (float.TryParse(rating.Replace(',', '.'), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out val)) + if (float.TryParse(rating.Replace(',', '.'), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out var val)) { item.CommunityRating = val; } @@ -643,9 +628,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - DateTime date; - - if (DateTime.TryParseExact(val, formatString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out date) && date.Year > 1850) + if (DateTime.TryParseExact(val, formatString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out var date) && date.Year > 1850) { item.PremiereDate = date.ToUniversalTime(); item.ProductionYear = date.Year; @@ -663,9 +646,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - DateTime date; - - if (DateTime.TryParseExact(val, formatString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out date) && date.Year > 1850) + if (DateTime.TryParseExact(val, formatString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out var date) && date.Year > 1850) { item.EndDate = date.ToUniversalTime(); } @@ -721,8 +702,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers default: string readerName = reader.Name; - string providerIdValue; - if (_validProviderIds.TryGetValue(readerName, out providerIdValue)) + if (_validProviderIds.TryGetValue(readerName, out string providerIdValue)) { var id = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(id)) @@ -912,8 +892,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int intVal; - if (int.TryParse(val, NumberStyles.Integer, _usCulture, out intVal)) + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out var intVal)) { sortOrder = intVal; } diff --git a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs index 3e7fd1c82c..c76f8345aa 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/EpisodeNfoParser.cs @@ -1,16 +1,16 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Providers; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Globalization; +using System.IO; +using System.Text; using System.Threading; using System.Xml; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.IO; using MediaBrowser.Model.Xml; -using System.IO; -using System.Text; +using Microsoft.Extensions.Logging; namespace MediaBrowser.XbmcMetadata.Parsers { @@ -97,9 +97,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(number)) { - int num; - - if (int.TryParse(number, out num)) + if (int.TryParse(number, out var num)) { item.ParentIndexNumber = num; } @@ -113,9 +111,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(number)) { - int num; - - if (int.TryParse(number, out num)) + if (int.TryParse(number, out var num)) { item.IndexNumber = num; } @@ -129,9 +125,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(number)) { - int num; - - if (int.TryParse(number, out num)) + if (int.TryParse(number, out var num)) { item.IndexNumberEnd = num; } @@ -145,10 +139,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int rval; - // int.TryParse is local aware, so it can be probamatic, force us culture - if (int.TryParse(val, NumberStyles.Integer, UsCulture, out rval)) + if (int.TryParse(val, NumberStyles.Integer, UsCulture, out var rval)) { item.AirsBeforeEpisodeNumber = rval; } @@ -163,10 +155,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int rval; - // int.TryParse is local aware, so it can be probamatic, force us culture - if (int.TryParse(val, NumberStyles.Integer, UsCulture, out rval)) + if (int.TryParse(val, NumberStyles.Integer, UsCulture, out var rval)) { item.AirsAfterSeasonNumber = rval; } @@ -181,10 +171,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int rval; - // int.TryParse is local aware, so it can be probamatic, force us culture - if (int.TryParse(val, NumberStyles.Integer, UsCulture, out rval)) + if (int.TryParse(val, NumberStyles.Integer, UsCulture, out var rval)) { item.AirsBeforeSeasonNumber = rval; } @@ -199,10 +187,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int rval; - // int.TryParse is local aware, so it can be probamatic, force us culture - if (int.TryParse(val, NumberStyles.Integer, UsCulture, out rval)) + if (int.TryParse(val, NumberStyles.Integer, UsCulture, out var rval)) { item.AirsBeforeSeasonNumber = rval; } @@ -217,10 +203,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { - int rval; - // int.TryParse is local aware, so it can be probamatic, force us culture - if (int.TryParse(val, NumberStyles.Integer, UsCulture, out rval)) + if (int.TryParse(val, NumberStyles.Integer, UsCulture, out var rval)) { item.AirsBeforeEpisodeNumber = rval; } diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index e6b4eea1c6..21ee8f92f4 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -1,28 +1,21 @@ -using System; +using System; using System.IO; using System.Linq; -using System.Text; +using System.Xml; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using Microsoft.Extensions.Logging; -using System.Xml; using MediaBrowser.Model.IO; using MediaBrowser.Model.Xml; +using Microsoft.Extensions.Logging; namespace MediaBrowser.XbmcMetadata.Parsers { class MovieNfoParser : BaseNfoParser /// - /// + /// public sealed class DiscoveredSsdpDevice { diff --git a/RSSDP/DisposableManagedObjectBase.cs b/RSSDP/DisposableManagedObjectBase.cs index c1349dd5c7..0f656fb469 100644 --- a/RSSDP/DisposableManagedObjectBase.cs +++ b/RSSDP/DisposableManagedObjectBase.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; @@ -20,10 +20,10 @@ namespace Rssdp.Infrastructure protected abstract void Dispose(bool disposing); /// - /// Throws and if the property is true. + /// Throws and if the property is true. /// /// - /// Thrown if the property is true. + /// Thrown if the property is true. /// protected virtual void ThrowIfDisposed() { diff --git a/RSSDP/HttpParserBase.cs b/RSSDP/HttpParserBase.cs index 000d6db26f..18712470da 100644 --- a/RSSDP/HttpParserBase.cs +++ b/RSSDP/HttpParserBase.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -26,19 +26,19 @@ namespace Rssdp.Infrastructure private static byte[] EmptyByteArray = new byte[]{}; /// - /// Parses the provided into either a or object. + /// Parses the provided into either a or object. /// /// A string containing the HTTP message to parse. - /// Either a or object containing the parsed data. + /// Either a or object containing the parsed data. public abstract T Parse(string data); /// - /// Parses a string containing either an HTTP request or response into a or object. + /// Parses a string containing either an HTTP request or response into a or object. /// - /// A or object representing the parsed message. + /// A or object representing the parsed message. /// A reference to the collection for the object. /// A string containing the data to be parsed. - /// An object containing the content of the parsed message. + /// An object containing the content of the parsed message. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times", Justification = "Honestly, it's fine. MemoryStream doesn't mind.")] protected virtual void Parse(T message, System.Net.Http.Headers.HttpHeaders headers, string data) { @@ -61,7 +61,7 @@ namespace Rssdp.Infrastructure /// Used to parse the first line of an HTTP request or response and assign the values to the appropriate properties on the . /// /// The first line of the HTTP message to be parsed. - /// Either a or to assign the parsed values to. + /// Either a or to assign the parsed values to. protected abstract void ParseStatusLine(string data, T message); /// diff --git a/RSSDP/HttpRequestParser.cs b/RSSDP/HttpRequestParser.cs index 1af7f0d515..d4505b8ad6 100644 --- a/RSSDP/HttpRequestParser.cs +++ b/RSSDP/HttpRequestParser.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace Rssdp.Infrastructure { /// - /// Parses a string into a or throws an exception. + /// Parses a string into a or throws an exception. /// public sealed class HttpRequestParser : HttpParserBase { @@ -26,17 +26,17 @@ namespace Rssdp.Infrastructure #region Public Methods /// - /// Parses the specified data into a instance. + /// Parses the specified data into a instance. /// /// A string containing the data to parse. - /// A instance containing the parsed data. - public override System.Net.Http.HttpRequestMessage Parse(string data) + /// A instance containing the parsed data. + public override HttpRequestMessage Parse(string data) { - System.Net.Http.HttpRequestMessage retVal = null; + HttpRequestMessage retVal = null; try { - retVal = new System.Net.Http.HttpRequestMessage(); + retVal = new HttpRequestMessage(); Parse(retVal, retVal.Headers, data); @@ -57,7 +57,7 @@ namespace Rssdp.Infrastructure /// Used to parse the first line of an HTTP request or response and assign the values to the appropriate properties on the . /// /// The first line of the HTTP message to be parsed. - /// Either a or to assign the parsed values to. + /// Either a or to assign the parsed values to. protected override void ParseStatusLine(string data, HttpRequestMessage message) { if (data == null) throw new ArgumentNullException(nameof(data)); diff --git a/RSSDP/HttpResponseParser.cs b/RSSDP/HttpResponseParser.cs index d864a8bb74..a77c898ffe 100644 --- a/RSSDP/HttpResponseParser.cs +++ b/RSSDP/HttpResponseParser.cs @@ -9,9 +9,9 @@ using System.Threading.Tasks; namespace Rssdp.Infrastructure { /// - /// Parses a string into a or throws an exception. + /// Parses a string into a or throws an exception. /// - public sealed class HttpResponseParser : HttpParserBase + public sealed class HttpResponseParser : HttpParserBase { #region Fields & Constants @@ -26,16 +26,16 @@ namespace Rssdp.Infrastructure #region Public Methods /// - /// Parses the specified data into a instance. + /// Parses the specified data into a instance. /// /// A string containing the data to parse. - /// A instance containing the parsed data. + /// A instance containing the parsed data. public override HttpResponseMessage Parse(string data) { - System.Net.Http.HttpResponseMessage retVal = null; + HttpResponseMessage retVal = null; try { - retVal = new System.Net.Http.HttpResponseMessage(); + retVal = new HttpResponseMessage(); Parse(retVal, retVal.Headers, data); @@ -68,7 +68,7 @@ namespace Rssdp.Infrastructure /// Used to parse the first line of an HTTP request or response and assign the values to the appropriate properties on the . /// /// The first line of the HTTP message to be parsed. - /// Either a or to assign the parsed values to. + /// Either a or to assign the parsed values to. protected override void ParseStatusLine(string data, HttpResponseMessage message) { if (data == null) throw new ArgumentNullException(nameof(data)); diff --git a/RSSDP/ISsdpCommunicationsServer.cs b/RSSDP/ISsdpCommunicationsServer.cs index b6329c1b39..ef75f997fb 100644 --- a/RSSDP/ISsdpCommunicationsServer.cs +++ b/RSSDP/ISsdpCommunicationsServer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Net; diff --git a/RSSDP/ISsdpDeviceLocator.cs b/RSSDP/ISsdpDeviceLocator.cs index 32235c0950..8f0d39e75a 100644 --- a/RSSDP/ISsdpDeviceLocator.cs +++ b/RSSDP/ISsdpDeviceLocator.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace Rssdp.Infrastructure { @@ -128,7 +128,7 @@ namespace Rssdp.Infrastructure /// /// Does nothing if this instance is not already listening for notifications. /// - /// Throw if the property is true. + /// Throw if the property is true. /// /// /// diff --git a/RSSDP/ISsdpDevicePublisher.cs b/RSSDP/ISsdpDevicePublisher.cs index b0924701f4..7e914c109d 100644 --- a/RSSDP/ISsdpDevicePublisher.cs +++ b/RSSDP/ISsdpDevicePublisher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading.Tasks; namespace Rssdp.Infrastructure @@ -17,14 +17,14 @@ namespace Rssdp.Infrastructure /// Adds a device (and it's children) to the list of devices being published by this server, making them discoverable to SSDP clients. /// /// The instance to add. - /// An awaitable . + /// An awaitable . void AddDevice(SsdpRootDevice device); /// /// Removes a device (and it's children) from the list of devices being published by this server, making them undiscoverable. /// /// The instance to add. - /// An awaitable . + /// An awaitable . Task RemoveDevice(SsdpRootDevice device); /// diff --git a/RSSDP/RSSDP.csproj b/RSSDP/RSSDP.csproj index 0737dc2135..f06d4687b9 100644 --- a/RSSDP/RSSDP.csproj +++ b/RSSDP/RSSDP.csproj @@ -1,4 +1,4 @@ - + diff --git a/RSSDP/RequestReceivedEventArgs.cs b/RSSDP/RequestReceivedEventArgs.cs index 6a5b0f0864..fd3cd9e3a2 100644 --- a/RSSDP/RequestReceivedEventArgs.cs +++ b/RSSDP/RequestReceivedEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Net; using System.Net.Http; diff --git a/RSSDP/ResponseReceivedEventArgs.cs b/RSSDP/ResponseReceivedEventArgs.cs index 5ec5376df4..5ed9664eda 100644 --- a/RSSDP/ResponseReceivedEventArgs.cs +++ b/RSSDP/ResponseReceivedEventArgs.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Net; using System.Net.Http; diff --git a/RSSDP/SsdpCommunicationsServer.cs b/RSSDP/SsdpCommunicationsServer.cs index 603ba51ef1..04e76ef591 100644 --- a/RSSDP/SsdpCommunicationsServer.cs +++ b/RSSDP/SsdpCommunicationsServer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; @@ -73,7 +73,7 @@ namespace Rssdp.Infrastructure /// /// Minimum constructor. /// - /// The argument is null. + /// The argument is null. public SsdpCommunicationsServer(ISocketFactory socketFactory, INetworkManager networkManager, ILogger logger, bool enableMultiSocketBinding) : this(socketFactory, 0, SsdpConstants.SsdpDefaultMulticastTimeToLive, networkManager, logger, enableMultiSocketBinding) { @@ -82,8 +82,8 @@ namespace Rssdp.Infrastructure /// /// Full constructor. /// - /// The argument is null. - /// The argument is less than or equal to zero. + /// The argument is null. + /// The argument is less than or equal to zero. public SsdpCommunicationsServer(ISocketFactory socketFactory, int localPort, int multicastTimeToLive, INetworkManager networkManager, ILogger logger, bool enableMultiSocketBinding) { if (socketFactory == null) throw new ArgumentNullException(nameof(socketFactory)); @@ -111,7 +111,7 @@ namespace Rssdp.Infrastructure /// /// Causes the server to begin listening for multicast messages, being SSDP search requests and notifications. /// - /// Thrown if the property is true (because has been called previously). + /// Thrown if the property is true (because has been called previously). public void BeginListeningForBroadcasts() { ThrowIfDisposed(); @@ -142,7 +142,7 @@ namespace Rssdp.Infrastructure /// /// Causes the server to stop listening for multicast messages, being SSDP search requests and notifications. /// - /// Thrown if the property is true (because has been called previously). + /// Thrown if the property is true (because has been called previously). public void StopListeningForBroadcasts() { lock (_BroadcastListenSocketSynchroniser) @@ -273,7 +273,7 @@ namespace Rssdp.Infrastructure /// /// Stops listening for search responses on the local, unicast socket. /// - /// Thrown if the property is true (because has been called previously). + /// Thrown if the property is true (because has been called previously). public void StopListeningForResponses() { lock (_SendSocketSynchroniser) diff --git a/RSSDP/SsdpConstants.cs b/RSSDP/SsdpConstants.cs index ab0ecb0f7e..8372d1cb3b 100644 --- a/RSSDP/SsdpConstants.cs +++ b/RSSDP/SsdpConstants.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; diff --git a/RSSDP/SsdpDevice.cs b/RSSDP/SsdpDevice.cs index 4508e4f34e..b4c4a88fdd 100644 --- a/RSSDP/SsdpDevice.cs +++ b/RSSDP/SsdpDevice.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; @@ -276,8 +276,8 @@ namespace Rssdp /// If the device is already a member of the collection, this method does nothing. /// Also sets the property of the added device and all descendant devices to the relevant instance. /// - /// Thrown if the argument is null. - /// Thrown if the is already associated with a different instance than used in this tree. Can occur if you try to add the same device instance to more than one tree. Also thrown if you try to add a device to itself. + /// Thrown if the argument is null. + /// Thrown if the is already associated with a different instance than used in this tree. Can occur if you try to add the same device instance to more than one tree. Also thrown if you try to add a device to itself. /// public void AddDevice(SsdpEmbeddedDevice device) { @@ -305,7 +305,7 @@ namespace Rssdp /// If the device is not a member of the collection, this method does nothing. /// Also sets the property to null for the removed device and all descendant devices. /// - /// Thrown if the argument is null. + /// Thrown if the argument is null. /// public void RemoveDevice(SsdpEmbeddedDevice device) { diff --git a/RSSDP/SsdpDeviceLocator.cs b/RSSDP/SsdpDeviceLocator.cs index 0a092e6b08..1348cce8da 100644 --- a/RSSDP/SsdpDeviceLocator.cs +++ b/RSSDP/SsdpDeviceLocator.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; @@ -185,7 +185,7 @@ namespace Rssdp.Infrastructure /// /// /// - /// Throw if the ty is true. + /// Throw if the ty is true. public void StartListeningForNotifications() { ThrowIfDisposed(); @@ -204,7 +204,7 @@ namespace Rssdp.Infrastructure /// /// /// - /// Throw if the property is true. + /// Throw if the property is true. public void StopListeningForNotifications() { ThrowIfDisposed(); diff --git a/RSSDP/SsdpDevicePublisher.cs b/RSSDP/SsdpDevicePublisher.cs index a44dd0c0c2..8a73e6a2d3 100644 --- a/RSSDP/SsdpDevicePublisher.cs +++ b/RSSDP/SsdpDevicePublisher.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; @@ -76,8 +76,8 @@ namespace Rssdp.Infrastructure /// This method ignores duplicate device adds (if the same device instance is added multiple times, the second and subsequent add calls do nothing). /// /// The instance to add. - /// Thrown if the argument is null. - /// Thrown if the contains property values that are not acceptable to the UPnP 1.0 specification. + /// Thrown if the argument is null. + /// Thrown if the contains property values that are not acceptable to the UPnP 1.0 specification. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1804:RemoveUnusedLocals", MessageId = "t", Justification = "Capture task to local variable supresses compiler warning, but task is not really needed.")] public void AddDevice(SsdpRootDevice device) { @@ -85,7 +85,7 @@ namespace Rssdp.Infrastructure ThrowIfDisposed(); - TimeSpan minCacheTime = TimeSpan.Zero; + var minCacheTime = TimeSpan.Zero; bool wasAdded = false; lock (_Devices) { @@ -113,13 +113,13 @@ namespace Rssdp.Infrastructure /// This method does nothing if the device was not found in the collection. /// /// The instance to add. - /// Thrown if the argument is null. + /// Thrown if the argument is null. public async Task RemoveDevice(SsdpRootDevice device) { if (device == null) throw new ArgumentNullException(nameof(device)); bool wasRemoved = false; - TimeSpan minCacheTime = TimeSpan.Zero; + var minCacheTime = TimeSpan.Zero; lock (_Devices) { if (_Devices.Contains(device)) diff --git a/RSSDP/SsdpEmbeddedDevice.cs b/RSSDP/SsdpEmbeddedDevice.cs index 0e02ce33c0..6f05518a93 100644 --- a/RSSDP/SsdpEmbeddedDevice.cs +++ b/RSSDP/SsdpEmbeddedDevice.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; diff --git a/RSSDP/SsdpRootDevice.cs b/RSSDP/SsdpRootDevice.cs index 20644535ad..a2b0f60f54 100644 --- a/RSSDP/SsdpRootDevice.cs +++ b/RSSDP/SsdpRootDevice.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Text; using System.Xml; diff --git a/SocketHttpListener/ByteOrder.cs b/SocketHttpListener/ByteOrder.cs index f5db52fd72..c04150c74b 100644 --- a/SocketHttpListener/ByteOrder.cs +++ b/SocketHttpListener/ByteOrder.cs @@ -1,17 +1,17 @@ namespace SocketHttpListener { - /// - /// Contains the values that indicate whether the byte order is a Little-endian or Big-endian. - /// - public enum ByteOrder : byte - { /// - /// Indicates a Little-endian. + /// Contains the values that indicate whether the byte order is a Little-endian or Big-endian. /// - Little, - /// - /// Indicates a Big-endian. - /// - Big - } + public enum ByteOrder : byte + { + /// + /// Indicates a Little-endian. + /// + Little, + /// + /// Indicates a Big-endian. + /// + Big + } } diff --git a/SocketHttpListener/CloseEventArgs.cs b/SocketHttpListener/CloseEventArgs.cs index ff30126bc4..c6460fd230 100644 --- a/SocketHttpListener/CloseEventArgs.cs +++ b/SocketHttpListener/CloseEventArgs.cs @@ -3,88 +3,77 @@ using System.Text; namespace SocketHttpListener { - /// - /// Contains the event data associated with a event. - /// - /// - /// A event occurs when the WebSocket connection has been closed. - /// If you would like to get the reason for the close, you should access the or - /// property. - /// - public class CloseEventArgs : EventArgs - { - #region Private Fields + /// + /// Contains the event data associated with a event. + /// + /// + /// A event occurs when the WebSocket connection has been closed. + /// If you would like to get the reason for the close, you should access the or + /// property. + /// + public class CloseEventArgs : EventArgs + { + #region Private Fields - private bool _clean; - private ushort _code; - private string _reason; + private bool _clean; + private ushort _code; + private string _reason; - #endregion + #endregion - #region Internal Constructors + #region Internal Constructors - internal CloseEventArgs (PayloadData payload) - { - var data = payload.ApplicationData; - var len = data.Length; - _code = len > 1 - ? data.SubArray (0, 2).ToUInt16 (ByteOrder.Big) - : (ushort) CloseStatusCode.NoStatusCode; + internal CloseEventArgs(PayloadData payload) + { + var data = payload.ApplicationData; + var len = data.Length; + _code = len > 1 + ? data.SubArray(0, 2).ToUInt16(ByteOrder.Big) + : (ushort)CloseStatusCode.NoStatusCode; - _reason = len > 2 - ? GetUtf8String(data.SubArray (2, len - 2)) - : string.Empty; - } + _reason = len > 2 + ? GetUtf8String(data.SubArray(2, len - 2)) + : string.Empty; + } - private static string GetUtf8String(byte[] bytes) - { - return Encoding.UTF8.GetString(bytes, 0, bytes.Length); - } + private static string GetUtf8String(byte[] bytes) + { + return Encoding.UTF8.GetString(bytes, 0, bytes.Length); + } - #endregion + #endregion - #region Public Properties + #region Public Properties - /// - /// Gets the status code for the close. - /// - /// - /// A that represents the status code for the close if any. - /// - public ushort Code { - get { - return _code; - } - } + /// + /// Gets the status code for the close. + /// + /// + /// A that represents the status code for the close if any. + /// + public ushort Code => _code; - /// - /// Gets the reason for the close. - /// - /// - /// A that represents the reason for the close if any. - /// - public string Reason { - get { - return _reason; - } - } + /// + /// Gets the reason for the close. + /// + /// + /// A that represents the reason for the close if any. + /// + public string Reason => _reason; - /// - /// Gets a value indicating whether the WebSocket connection has been closed cleanly. - /// - /// - /// true if the WebSocket connection has been closed cleanly; otherwise, false. - /// - public bool WasClean { - get { - return _clean; - } + /// + /// Gets a value indicating whether the WebSocket connection has been closed cleanly. + /// + /// + /// true if the WebSocket connection has been closed cleanly; otherwise, false. + /// + public bool WasClean + { + get => _clean; - internal set { - _clean = value; - } - } + internal set => _clean = value; + } - #endregion - } + #endregion + } } diff --git a/SocketHttpListener/CloseStatusCode.cs b/SocketHttpListener/CloseStatusCode.cs index 62a268bce1..428595bb09 100644 --- a/SocketHttpListener/CloseStatusCode.cs +++ b/SocketHttpListener/CloseStatusCode.cs @@ -1,94 +1,94 @@ namespace SocketHttpListener { - /// - /// Contains the values of the status code for the WebSocket connection close. - /// - /// - /// - /// The values of the status code are defined in - /// Section 7.4 - /// of RFC 6455. - /// - /// - /// "Reserved value" must not be set as a status code in a close control frame - /// by an endpoint. It's designated for use in applications expecting a status - /// code to indicate that the connection was closed due to the system grounds. - /// - /// - public enum CloseStatusCode : ushort - { /// - /// Equivalent to close status 1000. - /// Indicates a normal close. + /// Contains the values of the status code for the WebSocket connection close. /// - Normal = 1000, - /// - /// Equivalent to close status 1001. - /// Indicates that an endpoint is going away. - /// - Away = 1001, - /// - /// Equivalent to close status 1002. - /// Indicates that an endpoint is terminating the connection due to a protocol error. - /// - ProtocolError = 1002, - /// - /// Equivalent to close status 1003. - /// Indicates that an endpoint is terminating the connection because it has received - /// an unacceptable type message. - /// - IncorrectData = 1003, - /// - /// Equivalent to close status 1004. - /// Still undefined. Reserved value. - /// - Undefined = 1004, - /// - /// Equivalent to close status 1005. - /// Indicates that no status code was actually present. Reserved value. - /// - NoStatusCode = 1005, - /// - /// Equivalent to close status 1006. - /// Indicates that the connection was closed abnormally. Reserved value. - /// - Abnormal = 1006, - /// - /// Equivalent to close status 1007. - /// Indicates that an endpoint is terminating the connection because it has received - /// a message that contains a data that isn't consistent with the type of the message. - /// - InconsistentData = 1007, - /// - /// Equivalent to close status 1008. - /// Indicates that an endpoint is terminating the connection because it has received - /// a message that violates its policy. - /// - PolicyViolation = 1008, - /// - /// Equivalent to close status 1009. - /// Indicates that an endpoint is terminating the connection because it has received - /// a message that is too big to process. - /// - TooBig = 1009, - /// - /// Equivalent to close status 1010. - /// Indicates that the client is terminating the connection because it has expected - /// the server to negotiate one or more extension, but the server didn't return them - /// in the handshake response. - /// - IgnoreExtension = 1010, - /// - /// Equivalent to close status 1011. - /// Indicates that the server is terminating the connection because it has encountered - /// an unexpected condition that prevented it from fulfilling the request. - /// - ServerError = 1011, - /// - /// Equivalent to close status 1015. - /// Indicates that the connection was closed due to a failure to perform a TLS handshake. - /// Reserved value. - /// - TlsHandshakeFailure = 1015 - } + /// + /// + /// The values of the status code are defined in + /// Section 7.4 + /// of RFC 6455. + /// + /// + /// "Reserved value" must not be set as a status code in a close control frame + /// by an endpoint. It's designated for use in applications expecting a status + /// code to indicate that the connection was closed due to the system grounds. + /// + /// + public enum CloseStatusCode : ushort + { + /// + /// Equivalent to close status 1000. + /// Indicates a normal close. + /// + Normal = 1000, + /// + /// Equivalent to close status 1001. + /// Indicates that an endpoint is going away. + /// + Away = 1001, + /// + /// Equivalent to close status 1002. + /// Indicates that an endpoint is terminating the connection due to a protocol error. + /// + ProtocolError = 1002, + /// + /// Equivalent to close status 1003. + /// Indicates that an endpoint is terminating the connection because it has received + /// an unacceptable type message. + /// + IncorrectData = 1003, + /// + /// Equivalent to close status 1004. + /// Still undefined. Reserved value. + /// + Undefined = 1004, + /// + /// Equivalent to close status 1005. + /// Indicates that no status code was actually present. Reserved value. + /// + NoStatusCode = 1005, + /// + /// Equivalent to close status 1006. + /// Indicates that the connection was closed abnormally. Reserved value. + /// + Abnormal = 1006, + /// + /// Equivalent to close status 1007. + /// Indicates that an endpoint is terminating the connection because it has received + /// a message that contains a data that isn't consistent with the type of the message. + /// + InconsistentData = 1007, + /// + /// Equivalent to close status 1008. + /// Indicates that an endpoint is terminating the connection because it has received + /// a message that violates its policy. + /// + PolicyViolation = 1008, + /// + /// Equivalent to close status 1009. + /// Indicates that an endpoint is terminating the connection because it has received + /// a message that is too big to process. + /// + TooBig = 1009, + /// + /// Equivalent to close status 1010. + /// Indicates that the client is terminating the connection because it has expected + /// the server to negotiate one or more extension, but the server didn't return them + /// in the handshake response. + /// + IgnoreExtension = 1010, + /// + /// Equivalent to close status 1011. + /// Indicates that the server is terminating the connection because it has encountered + /// an unexpected condition that prevented it from fulfilling the request. + /// + ServerError = 1011, + /// + /// Equivalent to close status 1015. + /// Indicates that the connection was closed due to a failure to perform a TLS handshake. + /// Reserved value. + /// + TlsHandshakeFailure = 1015 + } } diff --git a/SocketHttpListener/CompressionMethod.cs b/SocketHttpListener/CompressionMethod.cs index 36a48d94cb..d6bcd63d89 100644 --- a/SocketHttpListener/CompressionMethod.cs +++ b/SocketHttpListener/CompressionMethod.cs @@ -1,23 +1,23 @@ namespace SocketHttpListener { - /// - /// Contains the values of the compression method used to compress the message on the WebSocket - /// connection. - /// - /// - /// The values of the compression method are defined in - /// Compression - /// Extensions for WebSocket. - /// - public enum CompressionMethod : byte - { /// - /// Indicates non compression. + /// Contains the values of the compression method used to compress the message on the WebSocket + /// connection. /// - None, - /// - /// Indicates using DEFLATE. - /// - Deflate - } + /// + /// The values of the compression method are defined in + /// Compression + /// Extensions for WebSocket. + /// + public enum CompressionMethod : byte + { + /// + /// Indicates non compression. + /// + None, + /// + /// Indicates using DEFLATE. + /// + Deflate + } } diff --git a/SocketHttpListener/ErrorEventArgs.cs b/SocketHttpListener/ErrorEventArgs.cs index bf1d6fc95f..9502d2a156 100644 --- a/SocketHttpListener/ErrorEventArgs.cs +++ b/SocketHttpListener/ErrorEventArgs.cs @@ -2,45 +2,41 @@ using System; namespace SocketHttpListener { - /// - /// Contains the event data associated with a event. - /// - /// - /// A event occurs when the gets an error. - /// If you would like to get the error message, you should access the - /// property. - /// - public class ErrorEventArgs : EventArgs - { - #region Private Fields + /// + /// Contains the event data associated with a event. + /// + /// + /// A event occurs when the gets an error. + /// If you would like to get the error message, you should access the + /// property. + /// + public class ErrorEventArgs : EventArgs + { + #region Private Fields - private string _message; + private string _message; - #endregion + #endregion - #region Internal Constructors + #region Internal Constructors - internal ErrorEventArgs (string message) - { - _message = message; - } + internal ErrorEventArgs(string message) + { + _message = message; + } - #endregion + #endregion - #region Public Properties + #region Public Properties - /// - /// Gets the error message. - /// - /// - /// A that represents the error message. - /// - public string Message { - get { - return _message; - } - } + /// + /// Gets the error message. + /// + /// + /// A that represents the error message. + /// + public string Message => _message; - #endregion - } + #endregion + } } diff --git a/SocketHttpListener/Ext.cs b/SocketHttpListener/Ext.cs index 4404235ba6..b051b67187 100644 --- a/SocketHttpListener/Ext.cs +++ b/SocketHttpListener/Ext.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Collections.Specialized; using System.IO; using System.IO.Compression; using System.Net; @@ -441,7 +440,8 @@ namespace SocketHttpListener continue; } } - else { + else + { } buffer.Append(c); @@ -932,9 +932,8 @@ namespace SocketHttpListener /// public static Uri ToUri(this string uriString) { - Uri res; return Uri.TryCreate( - uriString, uriString.MaybeUri() ? UriKind.Absolute : UriKind.Relative, out res) + uriString, uriString.MaybeUri() ? UriKind.Absolute : UriKind.Relative, out var res) ? res : null; } @@ -958,4 +957,4 @@ namespace SocketHttpListener #endregion } -} \ No newline at end of file +} diff --git a/SocketHttpListener/Fin.cs b/SocketHttpListener/Fin.cs index f91401b995..c8ffbf2b2f 100644 --- a/SocketHttpListener/Fin.cs +++ b/SocketHttpListener/Fin.cs @@ -1,8 +1,8 @@ namespace SocketHttpListener { - internal enum Fin : byte - { - More = 0x0, - Final = 0x1 - } + internal enum Fin : byte + { + More = 0x0, + Final = 0x1 + } } diff --git a/SocketHttpListener/HttpBase.cs b/SocketHttpListener/HttpBase.cs index d4ae857ff4..fea91d84b0 100644 --- a/SocketHttpListener/HttpBase.cs +++ b/SocketHttpListener/HttpBase.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.IO; +using System; using System.Text; -using System.Threading; using MediaBrowser.Model.Services; namespace SocketHttpListener @@ -53,21 +49,9 @@ namespace SocketHttpListener } } - public QueryParamCollection Headers - { - get - { - return _headers; - } - } + public QueryParamCollection Headers => _headers; - public Version ProtocolVersion - { - get - { - return _version; - } - } + public Version ProtocolVersion => _version; #endregion @@ -101,4 +85,4 @@ namespace SocketHttpListener #endregion } -} \ No newline at end of file +} diff --git a/SocketHttpListener/HttpResponse.cs b/SocketHttpListener/HttpResponse.cs index 535fde0310..bcfa4a9062 100644 --- a/SocketHttpListener/HttpResponse.cs +++ b/SocketHttpListener/HttpResponse.cs @@ -1,13 +1,11 @@ using System; -using System.Collections.Specialized; -using System.IO; +using System.Linq; using System.Net; using System.Text; -using HttpStatusCode = SocketHttpListener.Net.HttpStatusCode; -using HttpVersion = SocketHttpListener.Net.HttpVersion; -using System.Linq; using MediaBrowser.Model.Services; using SocketHttpListener.Net; +using HttpStatusCode = SocketHttpListener.Net.HttpStatusCode; +using HttpVersion = SocketHttpListener.Net.HttpVersion; namespace SocketHttpListener { @@ -48,13 +46,7 @@ namespace SocketHttpListener #region Public Properties - public CookieCollection Cookies - { - get - { - return GetCookies(Headers, true); - } - } + public CookieCollection Cookies => GetCookies(Headers, true); private static CookieCollection GetCookies(QueryParamCollection headers, bool response) { @@ -64,21 +56,9 @@ namespace SocketHttpListener : CookieHelper.Parse(headers[name], response); } - public bool IsProxyAuthenticationRequired - { - get - { - return _code == "407"; - } - } + public bool IsProxyAuthenticationRequired => _code == "407"; - public bool IsUnauthorized - { - get - { - return _code == "401"; - } - } + public bool IsUnauthorized => _code == "401"; public bool IsWebSocketResponse { @@ -92,21 +72,9 @@ namespace SocketHttpListener } } - public string Reason - { - get - { - return _reason; - } - } + public string Reason => _reason; - public string StatusCode - { - get - { - return _code; - } - } + public string StatusCode => _code; #endregion diff --git a/SocketHttpListener/Mask.cs b/SocketHttpListener/Mask.cs index adc2f098e9..c56f5b08c0 100644 --- a/SocketHttpListener/Mask.cs +++ b/SocketHttpListener/Mask.cs @@ -1,8 +1,8 @@ namespace SocketHttpListener { - internal enum Mask : byte - { - Unmask = 0x0, - Mask = 0x1 - } + internal enum Mask : byte + { + Unmask = 0x0, + Mask = 0x1 + } } diff --git a/SocketHttpListener/MessageEventArgs.cs b/SocketHttpListener/MessageEventArgs.cs index 86614c43c7..8e2151cb7a 100644 --- a/SocketHttpListener/MessageEventArgs.cs +++ b/SocketHttpListener/MessageEventArgs.cs @@ -3,94 +3,82 @@ using System.Text; namespace SocketHttpListener { - /// - /// Contains the event data associated with a event. - /// - /// - /// A event occurs when the receives - /// a text or binary data frame. - /// If you want to get the received data, you access the or - /// property. - /// - public class MessageEventArgs : EventArgs - { - #region Private Fields + /// + /// Contains the event data associated with a event. + /// + /// + /// A event occurs when the receives + /// a text or binary data frame. + /// If you want to get the received data, you access the or + /// property. + /// + public class MessageEventArgs : EventArgs + { + #region Private Fields - private string _data; - private Opcode _opcode; - private byte[] _rawData; + private string _data; + private Opcode _opcode; + private byte[] _rawData; - #endregion + #endregion - #region Internal Constructors + #region Internal Constructors - internal MessageEventArgs (Opcode opcode, byte[] data) - { - _opcode = opcode; - _rawData = data; - _data = convertToString (opcode, data); - } + internal MessageEventArgs(Opcode opcode, byte[] data) + { + _opcode = opcode; + _rawData = data; + _data = convertToString(opcode, data); + } - internal MessageEventArgs (Opcode opcode, PayloadData payload) - { - _opcode = opcode; - _rawData = payload.ApplicationData; - _data = convertToString (opcode, _rawData); - } + internal MessageEventArgs(Opcode opcode, PayloadData payload) + { + _opcode = opcode; + _rawData = payload.ApplicationData; + _data = convertToString(opcode, _rawData); + } - #endregion + #endregion - #region Public Properties + #region Public Properties - /// - /// Gets the received data as a . - /// - /// - /// A that contains the received data. - /// - public string Data { - get { - return _data; - } - } + /// + /// Gets the received data as a . + /// + /// + /// A that contains the received data. + /// + public string Data => _data; - /// - /// Gets the received data as an array of . - /// - /// - /// An array of that contains the received data. - /// - public byte [] RawData { - get { - return _rawData; - } - } + /// + /// Gets the received data as an array of . + /// + /// + /// An array of that contains the received data. + /// + public byte[] RawData => _rawData; - /// - /// Gets the type of the received data. - /// - /// - /// One of the values, indicates the type of the received data. - /// - public Opcode Type { - get { - return _opcode; - } - } + /// + /// Gets the type of the received data. + /// + /// + /// One of the values, indicates the type of the received data. + /// + public Opcode Type => _opcode; - #endregion + #endregion - #region Private Methods + #region Private Methods - private static string convertToString (Opcode opcode, byte [] data) - { - return data.Length == 0 - ? string.Empty - : opcode == Opcode.Text - ? Encoding.UTF8.GetString (data, 0, data.Length) - : opcode.ToString (); - } + private static string convertToString(Opcode opcode, byte[] data) + { + return data.Length == 0 + ? string.Empty + : opcode == Opcode.Text + ? Encoding.UTF8.GetString(data, 0, data.Length) + : opcode.ToString(); + } - #endregion - } + #endregion + } } diff --git a/SocketHttpListener/Net/AuthenticationSchemeSelector.cs b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs index c6e7e538ec..77e6d0b8ab 100644 --- a/SocketHttpListener/Net/AuthenticationSchemeSelector.cs +++ b/SocketHttpListener/Net/AuthenticationSchemeSelector.cs @@ -1,4 +1,4 @@ -using System.Net; +using System.Net; namespace SocketHttpListener.Net { diff --git a/SocketHttpListener/Net/AuthenticationTypes.cs b/SocketHttpListener/Net/AuthenticationTypes.cs index df6b9d576d..a3dbe9dfff 100644 --- a/SocketHttpListener/Net/AuthenticationTypes.cs +++ b/SocketHttpListener/Net/AuthenticationTypes.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace SocketHttpListener.Net { internal class AuthenticationTypes diff --git a/SocketHttpListener/Net/BoundaryType.cs b/SocketHttpListener/Net/BoundaryType.cs index f1e799f63c..da0b22910e 100644 --- a/SocketHttpListener/Net/BoundaryType.cs +++ b/SocketHttpListener/Net/BoundaryType.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - namespace SocketHttpListener.Net { internal enum BoundaryType diff --git a/SocketHttpListener/Net/ChunkStream.cs b/SocketHttpListener/Net/ChunkStream.cs index 5cc01614fa..3836947d4c 100644 --- a/SocketHttpListener/Net/ChunkStream.cs +++ b/SocketHttpListener/Net/ChunkStream.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Globalization; using System.IO; @@ -109,7 +108,7 @@ namespace SocketHttpListener.Net var chunksForRemoving = new List(count); for (int i = 0; i < count; i++) { - Chunk chunk = _chunks[i]; + var chunk = _chunks[i]; if (chunk.Offset == chunk.Bytes.Length) { @@ -181,10 +180,7 @@ namespace SocketHttpListener.Net InternalWrite(buffer, ref offset, size); } - public bool WantMore - { - get { return (_chunkRead != _chunkSize || _chunkSize != 0 || _state != State.None); } - } + public bool WantMore => (_chunkRead != _chunkSize || _chunkSize != 0 || _state != State.None); public bool DataAvailable { @@ -193,7 +189,7 @@ namespace SocketHttpListener.Net int count = _chunks.Count; for (int i = 0; i < count; i++) { - Chunk ch = _chunks[i]; + var ch = _chunks[i]; if (ch == null || ch.Bytes == null) continue; if (ch.Bytes.Length > 0 && ch.Offset < ch.Bytes.Length) @@ -203,15 +199,9 @@ namespace SocketHttpListener.Net } } - public int TotalDataSize - { - get { return _totalWritten; } - } + public int TotalDataSize => _totalWritten; - public int ChunkLeft - { - get { return _chunkSize - _chunkRead; } - } + public int ChunkLeft => _chunkSize - _chunkRead; private State ReadBody(byte[] buffer, ref int offset, int size) { @@ -378,7 +368,7 @@ namespace SocketHttpListener.Net return State.Trailer; } - StringReader reader = new StringReader(_saved.ToString()); + var reader = new StringReader(_saved.ToString()); string line; while ((line = reader.ReadLine()) != null && line != "") _headers.Add(line); @@ -388,7 +378,7 @@ namespace SocketHttpListener.Net private static void ThrowProtocolViolation(string message) { - WebException we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null); + var we = new WebException(message, null, WebExceptionStatus.ServerProtocolViolation, null); throw we; } } diff --git a/SocketHttpListener/Net/ChunkedInputStream.cs b/SocketHttpListener/Net/ChunkedInputStream.cs index 4d6d96a6cb..06dcb3a17e 100644 --- a/SocketHttpListener/Net/ChunkedInputStream.cs +++ b/SocketHttpListener/Net/ChunkedInputStream.cs @@ -1,8 +1,6 @@ -using System; +using System; using System.IO; using System.Net; -using System.Runtime.InteropServices; -using SocketHttpListener.Primitives; namespace SocketHttpListener.Net { @@ -63,14 +61,14 @@ namespace SocketHttpListener.Net : base(stream, buffer, offset, length) { _context = context; - WebHeaderCollection coll = (WebHeaderCollection)context.Request.Headers; + var coll = (WebHeaderCollection)context.Request.Headers; _decoder = new ChunkStream(coll); } public ChunkStream Decoder { - get { return _decoder; } - set { _decoder = value; } + get => _decoder; + set => _decoder = value; } protected override int ReadCore(byte[] buffer, int offset, int count) @@ -81,7 +79,7 @@ namespace SocketHttpListener.Net protected override IAsyncResult BeginReadCore(byte[] buffer, int offset, int size, AsyncCallback cback, object state) { - HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + var ares = new HttpStreamAsyncResult(this); ares._callback = cback; ares._state = state; if (_no_more_data || size == 0 || _closed) @@ -109,7 +107,7 @@ namespace SocketHttpListener.Net ares._buffer = new byte[8192]; ares._offset = 0; ares._count = 8192; - ReadBufferState rb = new ReadBufferState(buffer, offset, size, ares); + var rb = new ReadBufferState(buffer, offset, size, ares); rb.InitialCount += nread; base.BeginReadCore(ares._buffer, ares._offset, ares._count, OnRead, rb); return ares; @@ -118,7 +116,7 @@ namespace SocketHttpListener.Net private void OnRead(IAsyncResult base_ares) { ReadBufferState rb = (ReadBufferState)base_ares.AsyncState; - HttpStreamAsyncResult ares = rb.Ares; + var ares = rb.Ares; try { int nread = base.EndRead(base_ares); @@ -157,7 +155,7 @@ namespace SocketHttpListener.Net if (asyncResult == null) throw new ArgumentNullException(nameof(asyncResult)); - HttpStreamAsyncResult ares = asyncResult as HttpStreamAsyncResult; + var ares = asyncResult as HttpStreamAsyncResult; if (ares == null || !ReferenceEquals(this, ares._parent)) { throw new ArgumentException("Invalid async result"); diff --git a/SocketHttpListener/Net/CookieHelper.cs b/SocketHttpListener/Net/CookieHelper.cs index 6c1764e09e..3ad76ff238 100644 --- a/SocketHttpListener/Net/CookieHelper.cs +++ b/SocketHttpListener/Net/CookieHelper.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Collections.Generic; using System.Globalization; using System.Net; using System.Text; -using System.Threading.Tasks; namespace SocketHttpListener.Net { @@ -44,13 +43,12 @@ namespace SocketHttpListener.Net if (i < pairs.Length - 1) buffer.AppendFormat(", {0}", pairs[++i].Trim()); - DateTime expires; if (!DateTime.TryParseExact( buffer.ToString(), new[] { "ddd, dd'-'MMM'-'yyyy HH':'mm':'ss 'GMT'", "r" }, new CultureInfo("en-US"), DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeUniversal, - out expires)) + out var expires)) expires = DateTime.Now; if (cookie != null && cookie.Expires == DateTime.MinValue) diff --git a/SocketHttpListener/Net/EntitySendFormat.cs b/SocketHttpListener/Net/EntitySendFormat.cs index 9caee3e112..3ed981084d 100644 --- a/SocketHttpListener/Net/EntitySendFormat.cs +++ b/SocketHttpListener/Net/EntitySendFormat.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - namespace SocketHttpListener.Net { internal enum EntitySendFormat diff --git a/SocketHttpListener/Net/HttpConnection.cs b/SocketHttpListener/Net/HttpConnection.cs index 4fc9a468c7..af1c081d9b 100644 --- a/SocketHttpListener/Net/HttpConnection.cs +++ b/SocketHttpListener/Net/HttpConnection.cs @@ -3,19 +3,17 @@ using System.IO; using System.Net; using System.Net.Security; using System.Net.Sockets; +using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Text; +using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; using MediaBrowser.Model.System; using MediaBrowser.Model.Text; +using Microsoft.Extensions.Logging; using SocketHttpListener.Primitives; -using System.Security.Authentication; - -using System.Threading; namespace SocketHttpListener.Net { sealed class HttpConnection @@ -91,13 +89,7 @@ namespace SocketHttpListener.Net } } - public Stream Stream - { - get - { - return _stream; - } - } + public Stream Stream => _stream; public async Task Init() { @@ -133,15 +125,9 @@ namespace SocketHttpListener.Net _context = new HttpListenerContext(this, _textEncoding); } - public bool IsClosed - { - get { return (_socket == null); } - } + public bool IsClosed => (_socket == null); - public int Reuses - { - get { return _reuses; } - } + public int Reuses => _reuses; public IPEndPoint LocalEndPoint { @@ -155,20 +141,14 @@ namespace SocketHttpListener.Net } } - public IPEndPoint RemoteEndPoint - { - get { return _socket.RemoteEndPoint as IPEndPoint; } - } + public IPEndPoint RemoteEndPoint => _socket.RemoteEndPoint as IPEndPoint; - public bool IsSecure - { - get { return secure; } - } + public bool IsSecure => secure; public ListenerPrefix Prefix { - get { return _prefix; } - set { _prefix = value; } + get => _prefix; + set => _prefix = value; } private void OnTimeout(object unused) @@ -232,7 +212,7 @@ namespace SocketHttpListener.Net private static void OnRead(IAsyncResult ares) { - HttpConnection cnc = (HttpConnection)ares.AsyncState; + var cnc = (HttpConnection)ares.AsyncState; cnc.OnReadInternal(ares); } diff --git a/SocketHttpListener/Net/HttpEndPointListener.cs b/SocketHttpListener/Net/HttpEndPointListener.cs index a108e7dd46..ea7d8fd2d8 100644 --- a/SocketHttpListener/Net/HttpEndPointListener.cs +++ b/SocketHttpListener/Net/HttpEndPointListener.cs @@ -1,21 +1,15 @@ using System; -using System.Collections; using System.Collections.Generic; -using System.IO; using System.Net; using System.Net.Sockets; using System.Security.Cryptography.X509Certificates; using System.Threading; using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.System; using MediaBrowser.Model.Text; -using SocketHttpListener.Primitives; -using ProtocolType = MediaBrowser.Model.Net.ProtocolType; -using SocketType = MediaBrowser.Model.Net.SocketType; -using System.Threading.Tasks; +using Microsoft.Extensions.Logging; namespace SocketHttpListener.Net { @@ -64,13 +58,7 @@ namespace SocketHttpListener.Net CreateSocket(); } - internal HttpListener Listener - { - get - { - return _listener; - } - } + internal HttpListener Listener => _listener; private void CreateSocket() { @@ -172,7 +160,7 @@ namespace SocketHttpListener.Net } catch (Exception ex) { - HttpEndPointListener epl = (HttpEndPointListener)acceptEventArg.UserToken; + var epl = (HttpEndPointListener)acceptEventArg.UserToken; epl._logger.LogError(ex, "Error in socket.AcceptAsync"); } @@ -188,7 +176,7 @@ namespace SocketHttpListener.Net private static async void ProcessAccept(SocketAsyncEventArgs args) { - HttpEndPointListener epl = (HttpEndPointListener)args.UserToken; + var epl = (HttpEndPointListener)args.UserToken; if (epl._closed) { @@ -209,7 +197,7 @@ namespace SocketHttpListener.Net return; } - if(accepted == null) + if (accepted == null) { return; } @@ -226,7 +214,7 @@ namespace SocketHttpListener.Net var localEndPointString = accepted.LocalEndPoint == null ? string.Empty : accepted.LocalEndPoint.ToString(); //_logger.LogInformation("HttpEndPointListener Accepting connection from {0} to {1} secure connection requested: {2}", remoteEndPointString, localEndPointString, _secure); - HttpConnection conn = new HttpConnection(epl._logger, accepted, epl, epl._secure, epl._cert, epl._cryptoProvider, epl._streamHelper, epl._textEncoding, epl._fileSystem, epl._environment); + var conn = new HttpConnection(epl._logger, accepted, epl, epl._secure, epl._cert, epl._cryptoProvider, epl._streamHelper, epl._textEncoding, epl._fileSystem, epl._environment); await conn.Init().ConfigureAwait(false); @@ -288,9 +276,8 @@ namespace SocketHttpListener.Net public bool BindContext(HttpListenerContext context) { - HttpListenerRequest req = context.Request; - ListenerPrefix prefix; - HttpListener listener = SearchListener(req.Url, out prefix); + var req = context.Request; + HttpListener listener = SearchListener(req.Url, out var prefix); if (listener == null) return false; @@ -323,7 +310,7 @@ namespace SocketHttpListener.Net if (host != null && host != "") { Dictionary localPrefixes = _prefixes; - foreach (ListenerPrefix p in localPrefixes.Keys) + foreach (var p in localPrefixes.Keys) { string ppath = p.Path; if (ppath.Length < bestLength) diff --git a/SocketHttpListener/Net/HttpEndPointManager.cs b/SocketHttpListener/Net/HttpEndPointManager.cs index 01b5ae9bd9..a75af5f5d1 100644 --- a/SocketHttpListener/Net/HttpEndPointManager.cs +++ b/SocketHttpListener/Net/HttpEndPointManager.cs @@ -3,12 +3,7 @@ using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; -using System.Reflection; -using System.Threading.Tasks; -using MediaBrowser.Model.IO; using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Net; -using SocketHttpListener.Primitives; namespace SocketHttpListener.Net { @@ -22,7 +17,7 @@ namespace SocketHttpListener.Net public static void AddListener(ILogger logger, HttpListener listener) { - List added = new List(); + var added = new List(); try { lock ((s_ipEndPoints as ICollection).SyncRoot) @@ -62,14 +57,13 @@ namespace SocketHttpListener.Net int root = p.IndexOf('/', colon, p.Length - colon); string portString = p.Substring(colon + 1, root - colon - 1); - int port; - if (!int.TryParse(portString, out port) || port <= 0 || port >= 65536) + if (!int.TryParse(portString, out var port) || port <= 0 || port >= 65536) { throw new HttpListenerException((int)HttpStatusCode.BadRequest, "net_invalid_port"); } } - ListenerPrefix lp = new ListenerPrefix(p); + var lp = new ListenerPrefix(p); if (lp.Host != "*" && lp.Host != "+" && Uri.CheckHostName(lp.Host) == UriHostNameType.Unknown) throw new HttpListenerException((int)HttpStatusCode.BadRequest, "net_listener_host"); @@ -184,7 +178,7 @@ namespace SocketHttpListener.Net private static void RemovePrefixInternal(ILogger logger, string prefix, HttpListener listener) { - ListenerPrefix lp = new ListenerPrefix(prefix); + var lp = new ListenerPrefix(prefix); if (lp.Path.IndexOf('%') != -1) return; diff --git a/SocketHttpListener/Net/HttpKnownHeaderNames.cs b/SocketHttpListener/Net/HttpKnownHeaderNames.cs index ea46958501..dc6f2ce415 100644 --- a/SocketHttpListener/Net/HttpKnownHeaderNames.cs +++ b/SocketHttpListener/Net/HttpKnownHeaderNames.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace SocketHttpListener.Net { internal static partial class HttpKnownHeaderNames diff --git a/SocketHttpListener/Net/HttpListener.cs b/SocketHttpListener/Net/HttpListener.cs index a159cd273a..8ec6b89aab 100644 --- a/SocketHttpListener/Net/HttpListener.cs +++ b/SocketHttpListener/Net/HttpListener.cs @@ -1,17 +1,15 @@ using System; using System.Collections; using System.Collections.Generic; -using System.IO; using System.Net; using System.Security.Cryptography.X509Certificates; using MediaBrowser.Common.Net; using MediaBrowser.Model.Cryptography; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.System; using MediaBrowser.Model.Text; -using SocketHttpListener.Primitives; +using Microsoft.Extensions.Logging; namespace SocketHttpListener.Net { @@ -72,7 +70,7 @@ namespace SocketHttpListener.Net // TODO: Digest, NTLM and Negotiate require ControlPrincipal public AuthenticationSchemes AuthenticationSchemes { - get { return auth_schemes; } + get => auth_schemes; set { CheckDisposed(); @@ -82,7 +80,7 @@ namespace SocketHttpListener.Net public AuthenticationSchemeSelector AuthenticationSchemeSelectorDelegate { - get { return auth_selector; } + get => auth_selector; set { CheckDisposed(); @@ -90,15 +88,9 @@ namespace SocketHttpListener.Net } } - public bool IsListening - { - get { return listening; } - } + public bool IsListening => listening; - public static bool IsSupported - { - get { return true; } - } + public static bool IsSupported => true; public HttpListenerPrefixCollection Prefixes { @@ -112,7 +104,7 @@ namespace SocketHttpListener.Net // TODO: use this public string Realm { - get { return realm; } + get => realm; set { CheckDisposed(); @@ -122,7 +114,7 @@ namespace SocketHttpListener.Net public bool UnsafeConnectionNtlmAuthentication { - get { return unsafe_ntlm_auth; } + get => unsafe_ntlm_auth; set { CheckDisposed(); @@ -144,10 +136,7 @@ namespace SocketHttpListener.Net // } //} - internal X509Certificate Certificate - { - get { return _certificate; } - } + internal X509Certificate Certificate => _certificate; public void Abort() { diff --git a/SocketHttpListener/Net/HttpListenerBasicIdentity.cs b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs index d20e727770..5f6ec44b96 100644 --- a/SocketHttpListener/Net/HttpListenerBasicIdentity.cs +++ b/SocketHttpListener/Net/HttpListenerBasicIdentity.cs @@ -1,4 +1,4 @@ -using System.Security.Principal; +using System.Security.Principal; namespace SocketHttpListener.Net { @@ -12,10 +12,7 @@ namespace SocketHttpListener.Net this.password = password; } - public virtual string Password - { - get { return password; } - } + public virtual string Password => password; } public class GenericIdentity : IIdentity @@ -43,28 +40,10 @@ namespace SocketHttpListener.Net m_type = type; } - public virtual string Name - { - get - { - return m_name; - } - } + public virtual string Name => m_name; - public virtual string AuthenticationType - { - get - { - return m_type; - } - } + public virtual string AuthenticationType => m_type; - public virtual bool IsAuthenticated - { - get - { - return !m_name.Equals(""); - } - } + public virtual bool IsAuthenticated => !m_name.Equals(""); } } diff --git a/SocketHttpListener/Net/HttpListenerContext.Managed.cs b/SocketHttpListener/Net/HttpListenerContext.Managed.cs index db795f7425..a6622c4798 100644 --- a/SocketHttpListener/Net/HttpListenerContext.Managed.cs +++ b/SocketHttpListener/Net/HttpListenerContext.Managed.cs @@ -1,8 +1,8 @@ -using System.ComponentModel; +using System; +using System.ComponentModel; using System.Security.Principal; using System.Text; using System.Threading.Tasks; -using System; using MediaBrowser.Model.Text; using SocketHttpListener.Net.WebSockets; diff --git a/SocketHttpListener/Net/HttpListenerContext.cs b/SocketHttpListener/Net/HttpListenerContext.cs index e3e6eb906e..8045299c62 100644 --- a/SocketHttpListener/Net/HttpListenerContext.cs +++ b/SocketHttpListener/Net/HttpListenerContext.cs @@ -1,12 +1,8 @@ using System; using System.Net; using System.Security.Principal; -using MediaBrowser.Model.Cryptography; -using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; -using MediaBrowser.Model.Text; -using SocketHttpListener.Net.WebSockets; using System.Threading.Tasks; +using SocketHttpListener.Net.WebSockets; namespace SocketHttpListener.Net { @@ -22,13 +18,7 @@ namespace SocketHttpListener.Net // This can be used to cache the results of HttpListener.AuthenticationSchemeSelectorDelegate. internal AuthenticationSchemes AuthenticationSchemes { get; set; } - public HttpListenerResponse Response - { - get - { - return _response; - } - } + public HttpListenerResponse Response => _response; public Task AcceptWebSocketAsync(string subProtocol) { @@ -66,13 +56,7 @@ namespace SocketHttpListener.Net } } - public virtual IIdentity Identity - { - get - { - return m_identity; - } - } + public virtual IIdentity Identity => m_identity; public virtual bool IsInRole(string role) { diff --git a/SocketHttpListener/Net/HttpListenerPrefixCollection.cs b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs index f0e496a5a7..97dc6797ce 100644 --- a/SocketHttpListener/Net/HttpListenerPrefixCollection.cs +++ b/SocketHttpListener/Net/HttpListenerPrefixCollection.cs @@ -18,20 +18,11 @@ namespace SocketHttpListener.Net this.listener = listener; } - public int Count - { - get { return prefixes.Count; } - } + public int Count => prefixes.Count; - public bool IsReadOnly - { - get { return false; } - } + public bool IsReadOnly => false; - public bool IsSynchronized - { - get { return false; } - } + public bool IsSynchronized => false; public void Add(string uriPrefix) { diff --git a/SocketHttpListener/Net/HttpListenerRequest.Managed.cs b/SocketHttpListener/Net/HttpListenerRequest.Managed.cs index 8b68afe33c..3f9e32f089 100644 --- a/SocketHttpListener/Net/HttpListenerRequest.Managed.cs +++ b/SocketHttpListener/Net/HttpListenerRequest.Managed.cs @@ -1,12 +1,7 @@ -using System; -using System.Text; -using System.Collections.Specialized; -using System.Globalization; +using System; using System.IO; -using System.Security.Authentication.ExtendedProtection; -using System.Security.Cryptography.X509Certificates; +using System.Text; using MediaBrowser.Model.Services; -using MediaBrowser.Model.Text; namespace SocketHttpListener.Net { diff --git a/SocketHttpListener/Net/HttpListenerRequest.cs b/SocketHttpListener/Net/HttpListenerRequest.cs index 16e2456112..1c832367ef 100644 --- a/SocketHttpListener/Net/HttpListenerRequest.cs +++ b/SocketHttpListener/Net/HttpListenerRequest.cs @@ -1,17 +1,11 @@ using System; -using System.Collections.Specialized; +using System.Collections.Generic; using System.Globalization; -using System.IO; using System.Net; -using System.Security.Cryptography.X509Certificates; using System.Text; -using System.Threading.Tasks; -using MediaBrowser.Model.Net; using MediaBrowser.Model.Services; -using MediaBrowser.Model.Text; -using SocketHttpListener.Primitives; -using System.Collections.Generic; using SocketHttpListener.Net.WebSockets; +using SocketHttpListener.Primitives; namespace SocketHttpListener.Net { @@ -29,7 +23,7 @@ namespace SocketHttpListener.Net private static CookieCollection ParseCookies(Uri uri, string setCookieHeader) { - CookieCollection cookies = new CookieCollection(); + var cookies = new CookieCollection(); return cookies; } @@ -177,7 +171,7 @@ namespace SocketHttpListener.Net { get { - QueryParamCollection queryString = new QueryParamCollection(); + var queryString = new QueryParamCollection(); Helpers.FillFromString(queryString, Url.Query, true, ContentEncoding); return queryString; } @@ -203,7 +197,7 @@ namespace SocketHttpListener.Net return null; } - bool success = Uri.TryCreate(referrer, UriKind.RelativeOrAbsolute, out Uri urlReferrer); + bool success = Uri.TryCreate(referrer, UriKind.RelativeOrAbsolute, out var urlReferrer); return success ? urlReferrer : null; } } @@ -302,7 +296,7 @@ namespace SocketHttpListener.Net // collect comma-separated values into list - List values = new List(); + var values = new List(); int i = 0; while (i < l) @@ -347,7 +341,7 @@ namespace SocketHttpListener.Net private static string UrlDecodeStringFromStringInternal(string s, Encoding e) { int count = s.Length; - UrlDecoder helper = new UrlDecoder(count, e); + var helper = new UrlDecoder(count, e); // go through the string's chars collapsing %XX and %uXXXX and // appending each char as char, with exception of %XX constructs diff --git a/SocketHttpListener/Net/HttpListenerRequestUriBuilder.cs b/SocketHttpListener/Net/HttpListenerRequestUriBuilder.cs index 63790d7962..7b4b619e68 100644 --- a/SocketHttpListener/Net/HttpListenerRequestUriBuilder.cs +++ b/SocketHttpListener/Net/HttpListenerRequestUriBuilder.cs @@ -1,8 +1,8 @@ -using System; +using System; using System.Collections.Generic; using System.Diagnostics; -using System.Text; using System.Globalization; +using System.Text; namespace SocketHttpListener.Net { @@ -54,7 +54,7 @@ namespace SocketHttpListener.Net public static Uri GetRequestUri(string rawUri, string cookedUriScheme, string cookedUriHost, string cookedUriPath, string cookedUriQuery) { - HttpListenerRequestUriBuilder builder = new HttpListenerRequestUriBuilder(rawUri, + var builder = new HttpListenerRequestUriBuilder(rawUri, cookedUriScheme, cookedUriHost, cookedUriPath, cookedUriQuery); return builder.Build(); @@ -232,8 +232,7 @@ namespace SocketHttpListener.Net { // http.sys only supports %uXXXX (4 hex-digits), even though unicode code points could have up to // 6 hex digits. Therefore we parse always 4 characters after %u and convert them to an int. - int codePointValue; - if (!int.TryParse(codePoint, NumberStyles.HexNumber, null, out codePointValue)) + if (!int.TryParse(codePoint, NumberStyles.HexNumber, null, out var codePointValue)) { //if (NetEventSource.IsEnabled) // NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_percent_value, codePoint)); @@ -264,8 +263,7 @@ namespace SocketHttpListener.Net private bool AddPercentEncodedOctetToRawOctetsList(Encoding encoding, string escapedCharacter) { - byte encodedValue; - if (!byte.TryParse(escapedCharacter, NumberStyles.HexNumber, null, out encodedValue)) + if (!byte.TryParse(escapedCharacter, NumberStyles.HexNumber, null, out byte encodedValue)) { //if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_percent_value, escapedCharacter)); return false; @@ -327,7 +325,7 @@ namespace SocketHttpListener.Net private static string GetOctetsAsString(IEnumerable octets) { - StringBuilder octetString = new StringBuilder(); + var octetString = new StringBuilder(); bool first = true; foreach (byte octet in octets) diff --git a/SocketHttpListener/Net/HttpListenerResponse.Managed.cs b/SocketHttpListener/Net/HttpListenerResponse.Managed.cs index 8fb4518a15..9f9b8384d5 100644 --- a/SocketHttpListener/Net/HttpListenerResponse.Managed.cs +++ b/SocketHttpListener/Net/HttpListenerResponse.Managed.cs @@ -1,14 +1,13 @@ -using System; -using System.Collections.Generic; +using System; using System.Globalization; using System.IO; using System.Net; using System.Text; +using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Text; using SocketHttpListener.Primitives; -using System.Threading; -using MediaBrowser.Model.IO; namespace SocketHttpListener.Net { @@ -39,7 +38,7 @@ namespace SocketHttpListener.Net public Version ProtocolVersion { - get { return _version; } + get => _version; set { CheckDisposed(); @@ -58,7 +57,7 @@ namespace SocketHttpListener.Net public int StatusCode { - get { return _statusCode; } + get => _statusCode; set { CheckDisposed(); @@ -264,8 +263,8 @@ namespace SocketHttpListener.Net ComputeCookies(); } - Encoding encoding = _textEncoding.GetDefaultEncoding(); - StreamWriter writer = new StreamWriter(ms, encoding, 256); + var encoding = _textEncoding.GetDefaultEncoding(); + var writer = new StreamWriter(ms, encoding, 256); writer.Write("HTTP/1.1 {0} ", _statusCode); // "1.1" matches Windows implementation, which ignores the response version writer.Flush(); byte[] statusDescriptionBytes = WebHeaderEncoding.GetBytes(StatusDescription); diff --git a/SocketHttpListener/Net/HttpListenerResponse.cs b/SocketHttpListener/Net/HttpListenerResponse.cs index 351a206eec..a32aca0433 100644 --- a/SocketHttpListener/Net/HttpListenerResponse.cs +++ b/SocketHttpListener/Net/HttpListenerResponse.cs @@ -1,14 +1,7 @@ using System; -using System.Collections.Generic; using System.IO; using System.Net; using System.Text; -using System.Threading.Tasks; -using System.Globalization; -using System.Runtime.InteropServices; -using System.ComponentModel; -using System.Diagnostics; -using Microsoft.Win32.SafeHandles; namespace SocketHttpListener.Net { @@ -22,16 +15,13 @@ namespace SocketHttpListener.Net private string _statusDescription; private WebHeaderCollection _webHeaders = new WebHeaderCollection(); - public WebHeaderCollection Headers - { - get { return _webHeaders; } - } + public WebHeaderCollection Headers => _webHeaders; public Encoding ContentEncoding { get; set; } public string ContentType { - get { return Headers["Content-Type"]; } + get => Headers["Content-Type"]; set { CheckDisposed(); @@ -46,13 +36,13 @@ namespace SocketHttpListener.Net } } - private HttpListenerContext HttpListenerContext { get { return _httpContext; } } + private HttpListenerContext HttpListenerContext => _httpContext; - private HttpListenerRequest HttpListenerRequest { get { return HttpListenerContext.Request; } } + private HttpListenerRequest HttpListenerRequest => HttpListenerContext.Request; internal EntitySendFormat EntitySendFormat { - get { return (EntitySendFormat)_boundaryType; } + get => (EntitySendFormat)_boundaryType; set { CheckDisposed(); @@ -71,8 +61,8 @@ namespace SocketHttpListener.Net public bool SendChunked { - get { return EntitySendFormat == EntitySendFormat.Chunked; } - set { EntitySendFormat = value ? EntitySendFormat.Chunked : EntitySendFormat.ContentLength; } + get => EntitySendFormat == EntitySendFormat.Chunked; + set => EntitySendFormat = value ? EntitySendFormat.Chunked : EntitySendFormat.ContentLength; } // We MUST NOT send message-body when we send responses with these Status codes @@ -92,7 +82,7 @@ namespace SocketHttpListener.Net public long ContentLength64 { - get { return _contentLength; } + get => _contentLength; set { CheckDisposed(); @@ -111,13 +101,13 @@ namespace SocketHttpListener.Net public CookieCollection Cookies { - get { return _cookies ?? (_cookies = new CookieCollection()); } - set { _cookies = value; } + get => _cookies ?? (_cookies = new CookieCollection()); + set => _cookies = value; } public bool KeepAlive { - get { return _keepAlive; } + get => _keepAlive; set { CheckDisposed(); @@ -137,7 +127,7 @@ namespace SocketHttpListener.Net public string RedirectLocation { - get { return Headers["Location"]; } + get => Headers["Location"]; set { // note that this doesn't set the status code to a redirect one diff --git a/SocketHttpListener/Net/HttpRequestStream.Managed.cs b/SocketHttpListener/Net/HttpRequestStream.Managed.cs index 493e2673b2..42fc4d97c2 100644 --- a/SocketHttpListener/Net/HttpRequestStream.Managed.cs +++ b/SocketHttpListener/Net/HttpRequestStream.Managed.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; -using System.Runtime.ExceptionServices; -using System.Text; -using System.Threading.Tasks; namespace SocketHttpListener.Net { @@ -128,7 +124,7 @@ namespace SocketHttpListener.Net { if (size == 0 || _closed) { - HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + var ares = new HttpStreamAsyncResult(this); ares._callback = cback; ares._state = state; ares.Complete(); @@ -138,7 +134,7 @@ namespace SocketHttpListener.Net int nread = FillFromBuffer(buffer, offset, size); if (nread > 0 || nread == -1) { - HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + var ares = new HttpStreamAsyncResult(this); ares._buffer = buffer; ares._offset = offset; ares._count = size; diff --git a/SocketHttpListener/Net/HttpRequestStream.cs b/SocketHttpListener/Net/HttpRequestStream.cs index c9a1d5a2db..1c554df20b 100644 --- a/SocketHttpListener/Net/HttpRequestStream.cs +++ b/SocketHttpListener/Net/HttpRequestStream.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -86,25 +84,13 @@ namespace SocketHttpListener.Net public override void Flush() { } public override Task FlushAsync(CancellationToken cancellationToken) => Task.CompletedTask; - public override long Length - { - get - { - throw new NotImplementedException(); - } - } + public override long Length => throw new NotImplementedException(); public override long Position { - get - { - throw new NotImplementedException(); - } + get => throw new NotImplementedException(); - set - { - throw new NotImplementedException(); - } + set => throw new NotImplementedException(); } public override long Seek(long offset, SeekOrigin origin) diff --git a/SocketHttpListener/Net/HttpResponseStream.Managed.cs b/SocketHttpListener/Net/HttpResponseStream.Managed.cs index 719dfcc129..5d02a9c956 100644 --- a/SocketHttpListener/Net/HttpResponseStream.Managed.cs +++ b/SocketHttpListener/Net/HttpResponseStream.Managed.cs @@ -1,15 +1,13 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; using System.Net; using System.Net.Sockets; -using System.Runtime.ExceptionServices; using System.Text; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; +using Microsoft.Extensions.Logging; namespace SocketHttpListener.Net { @@ -228,7 +226,7 @@ namespace SocketHttpListener.Net { if (_closed) { - HttpStreamAsyncResult ares = new HttpStreamAsyncResult(this); + var ares = new HttpStreamAsyncResult(this); ares._callback = cback; ares._state = state; ares.Complete(); diff --git a/SocketHttpListener/Net/HttpResponseStream.cs b/SocketHttpListener/Net/HttpResponseStream.cs index 5b7fa417f3..085c2ad0cb 100644 --- a/SocketHttpListener/Net/HttpResponseStream.cs +++ b/SocketHttpListener/Net/HttpResponseStream.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -19,25 +17,13 @@ namespace SocketHttpListener.Net public override void Flush() { } public override Task FlushAsync(CancellationToken cancellationToken) => Task.CompletedTask; - public override long Length - { - get - { - throw new NotImplementedException(); - } - } + public override long Length => throw new NotImplementedException(); public override long Position { - get - { - throw new NotImplementedException(); - } + get => throw new NotImplementedException(); - set - { - throw new NotImplementedException(); - } + set => throw new NotImplementedException(); } public override long Seek(long offset, SeekOrigin origin) diff --git a/SocketHttpListener/Net/HttpStatusCode.cs b/SocketHttpListener/Net/HttpStatusCode.cs index 93da82ba08..d4bb61b8a7 100644 --- a/SocketHttpListener/Net/HttpStatusCode.cs +++ b/SocketHttpListener/Net/HttpStatusCode.cs @@ -1,321 +1,321 @@ namespace SocketHttpListener.Net { - /// - /// Contains the values of the HTTP status codes. - /// - /// - /// The HttpStatusCode enumeration contains the values of the HTTP status codes defined in - /// RFC 2616 for HTTP 1.1. - /// - public enum HttpStatusCode - { /// - /// Equivalent to status code 100. - /// Indicates that the client should continue with its request. - /// - Continue = 100, - /// - /// Equivalent to status code 101. - /// Indicates that the server is switching the HTTP version or protocol on the connection. - /// - SwitchingProtocols = 101, - /// - /// Equivalent to status code 200. - /// Indicates that the client's request has succeeded. - /// - OK = 200, - /// - /// Equivalent to status code 201. - /// Indicates that the client's request has been fulfilled and resulted in a new resource being - /// created. - /// - Created = 201, - /// - /// Equivalent to status code 202. - /// Indicates that the client's request has been accepted for processing, but the processing - /// hasn't been completed. - /// - Accepted = 202, - /// - /// Equivalent to status code 203. - /// Indicates that the returned metainformation is from a local or a third-party copy instead of - /// the origin server. - /// - NonAuthoritativeInformation = 203, - /// - /// Equivalent to status code 204. - /// Indicates that the server has fulfilled the client's request but doesn't need to return - /// an entity-body. - /// - NoContent = 204, - /// - /// Equivalent to status code 205. - /// Indicates that the server has fulfilled the client's request, and the user agent should - /// reset the document view which caused the request to be sent. - /// - ResetContent = 205, - /// - /// Equivalent to status code 206. - /// Indicates that the server has fulfilled the partial GET request for the resource. - /// - PartialContent = 206, - /// - /// - /// Equivalent to status code 300. - /// Indicates that the requested resource corresponds to any of multiple representations. - /// - /// - /// MultipleChoices is a synonym for Ambiguous. - /// - /// - MultipleChoices = 300, - /// - /// - /// Equivalent to status code 300. - /// Indicates that the requested resource corresponds to any of multiple representations. - /// - /// - /// Ambiguous is a synonym for MultipleChoices. - /// - /// - Ambiguous = 300, - /// - /// - /// Equivalent to status code 301. - /// Indicates that the requested resource has been assigned a new permanent URI and - /// any future references to this resource should use one of the returned URIs. - /// - /// - /// MovedPermanently is a synonym for Moved. - /// - /// - MovedPermanently = 301, - /// - /// - /// Equivalent to status code 301. - /// Indicates that the requested resource has been assigned a new permanent URI and - /// any future references to this resource should use one of the returned URIs. - /// - /// - /// Moved is a synonym for MovedPermanently. - /// - /// - Moved = 301, - /// - /// - /// Equivalent to status code 302. - /// Indicates that the requested resource is located temporarily under a different URI. - /// - /// - /// Found is a synonym for Redirect. - /// - /// - Found = 302, - /// - /// - /// Equivalent to status code 302. - /// Indicates that the requested resource is located temporarily under a different URI. - /// - /// - /// Redirect is a synonym for Found. - /// - /// - Redirect = 302, - /// - /// - /// Equivalent to status code 303. - /// Indicates that the response to the request can be found under a different URI and - /// should be retrieved using a GET method on that resource. - /// - /// - /// SeeOther is a synonym for RedirectMethod. - /// - /// - SeeOther = 303, - /// - /// - /// Equivalent to status code 303. - /// Indicates that the response to the request can be found under a different URI and - /// should be retrieved using a GET method on that resource. - /// - /// - /// RedirectMethod is a synonym for SeeOther. - /// - /// - RedirectMethod = 303, - /// - /// Equivalent to status code 304. - /// Indicates that the client has performed a conditional GET request and access is allowed, - /// but the document hasn't been modified. - /// - NotModified = 304, - /// - /// Equivalent to status code 305. - /// Indicates that the requested resource must be accessed through the proxy given by - /// the Location field. - /// - UseProxy = 305, - /// - /// Equivalent to status code 306. - /// This status code was used in a previous version of the specification, is no longer used, - /// and is reserved for future use. - /// - Unused = 306, - /// - /// - /// Equivalent to status code 307. - /// Indicates that the requested resource is located temporarily under a different URI. - /// - /// - /// TemporaryRedirect is a synonym for RedirectKeepVerb. - /// - /// - TemporaryRedirect = 307, - /// - /// - /// Equivalent to status code 307. - /// Indicates that the requested resource is located temporarily under a different URI. - /// - /// - /// RedirectKeepVerb is a synonym for TemporaryRedirect. - /// - /// - RedirectKeepVerb = 307, - /// - /// Equivalent to status code 400. - /// Indicates that the client's request couldn't be understood by the server due to - /// malformed syntax. - /// - BadRequest = 400, - /// - /// Equivalent to status code 401. - /// Indicates that the client's request requires user authentication. - /// - Unauthorized = 401, - /// - /// Equivalent to status code 402. - /// This status code is reserved for future use. - /// - PaymentRequired = 402, - /// - /// Equivalent to status code 403. - /// Indicates that the server understood the client's request but is refusing to fulfill it. - /// - Forbidden = 403, - /// - /// Equivalent to status code 404. - /// Indicates that the server hasn't found anything matching the request URI. - /// - NotFound = 404, - /// - /// Equivalent to status code 405. - /// Indicates that the method specified in the request line isn't allowed for the resource - /// identified by the request URI. - /// - MethodNotAllowed = 405, - /// - /// Equivalent to status code 406. - /// Indicates that the server doesn't have the appropriate resource to respond to the Accept - /// headers in the client's request. - /// - NotAcceptable = 406, - /// - /// Equivalent to status code 407. - /// Indicates that the client must first authenticate itself with the proxy. - /// - ProxyAuthenticationRequired = 407, - /// - /// Equivalent to status code 408. - /// Indicates that the client didn't produce a request within the time that the server was - /// prepared to wait. - /// - RequestTimeout = 408, - /// - /// Equivalent to status code 409. - /// Indicates that the client's request couldn't be completed due to a conflict on the server. - /// - Conflict = 409, - /// - /// Equivalent to status code 410. - /// Indicates that the requested resource is no longer available at the server and - /// no forwarding address is known. - /// - Gone = 410, - /// - /// Equivalent to status code 411. - /// Indicates that the server refuses to accept the client's request without a defined - /// Content-Length. - /// - LengthRequired = 411, - /// - /// Equivalent to status code 412. - /// Indicates that the precondition given in one or more of the request headers evaluated to - /// false when it was tested on the server. - /// - PreconditionFailed = 412, - /// - /// Equivalent to status code 413. - /// Indicates that the entity of the client's request is larger than the server is willing or - /// able to process. - /// - RequestEntityTooLarge = 413, - /// - /// Equivalent to status code 414. - /// Indicates that the request URI is longer than the server is willing to interpret. - /// - RequestUriTooLong = 414, - /// - /// Equivalent to status code 415. - /// Indicates that the entity of the client's request is in a format not supported by - /// the requested resource for the requested method. - /// - UnsupportedMediaType = 415, - /// - /// Equivalent to status code 416. - /// Indicates that none of the range specifier values in a Range request header overlap - /// the current extent of the selected resource. - /// - RequestedRangeNotSatisfiable = 416, - /// - /// Equivalent to status code 417. - /// Indicates that the expectation given in an Expect request header couldn't be met by - /// the server. - /// - ExpectationFailed = 417, - /// - /// Equivalent to status code 500. - /// Indicates that the server encountered an unexpected condition which prevented it from - /// fulfilling the client's request. - /// - InternalServerError = 500, - /// - /// Equivalent to status code 501. - /// Indicates that the server doesn't support the functionality required to fulfill the client's - /// request. - /// - NotImplemented = 501, - /// - /// Equivalent to status code 502. - /// Indicates that a gateway or proxy server received an invalid response from the upstream - /// server. - /// - BadGateway = 502, - /// - /// Equivalent to status code 503. - /// Indicates that the server is currently unable to handle the client's request due to - /// a temporary overloading or maintenance of the server. - /// - ServiceUnavailable = 503, - /// - /// Equivalent to status code 504. - /// Indicates that a gateway or proxy server didn't receive a timely response from the upstream - /// server or some other auxiliary server. - /// - GatewayTimeout = 504, - /// - /// Equivalent to status code 505. - /// Indicates that the server doesn't support the HTTP version used in the client's request. - /// - HttpVersionNotSupported = 505, - } + /// Contains the values of the HTTP status codes. + /// + /// + /// The HttpStatusCode enumeration contains the values of the HTTP status codes defined in + /// RFC 2616 for HTTP 1.1. + /// + public enum HttpStatusCode + { + /// + /// Equivalent to status code 100. + /// Indicates that the client should continue with its request. + /// + Continue = 100, + /// + /// Equivalent to status code 101. + /// Indicates that the server is switching the HTTP version or protocol on the connection. + /// + SwitchingProtocols = 101, + /// + /// Equivalent to status code 200. + /// Indicates that the client's request has succeeded. + /// + OK = 200, + /// + /// Equivalent to status code 201. + /// Indicates that the client's request has been fulfilled and resulted in a new resource being + /// created. + /// + Created = 201, + /// + /// Equivalent to status code 202. + /// Indicates that the client's request has been accepted for processing, but the processing + /// hasn't been completed. + /// + Accepted = 202, + /// + /// Equivalent to status code 203. + /// Indicates that the returned metainformation is from a local or a third-party copy instead of + /// the origin server. + /// + NonAuthoritativeInformation = 203, + /// + /// Equivalent to status code 204. + /// Indicates that the server has fulfilled the client's request but doesn't need to return + /// an entity-body. + /// + NoContent = 204, + /// + /// Equivalent to status code 205. + /// Indicates that the server has fulfilled the client's request, and the user agent should + /// reset the document view which caused the request to be sent. + /// + ResetContent = 205, + /// + /// Equivalent to status code 206. + /// Indicates that the server has fulfilled the partial GET request for the resource. + /// + PartialContent = 206, + /// + /// + /// Equivalent to status code 300. + /// Indicates that the requested resource corresponds to any of multiple representations. + /// + /// + /// MultipleChoices is a synonym for Ambiguous. + /// + /// + MultipleChoices = 300, + /// + /// + /// Equivalent to status code 300. + /// Indicates that the requested resource corresponds to any of multiple representations. + /// + /// + /// Ambiguous is a synonym for MultipleChoices. + /// + /// + Ambiguous = 300, + /// + /// + /// Equivalent to status code 301. + /// Indicates that the requested resource has been assigned a new permanent URI and + /// any future references to this resource should use one of the returned URIs. + /// + /// + /// MovedPermanently is a synonym for Moved. + /// + /// + MovedPermanently = 301, + /// + /// + /// Equivalent to status code 301. + /// Indicates that the requested resource has been assigned a new permanent URI and + /// any future references to this resource should use one of the returned URIs. + /// + /// + /// Moved is a synonym for MovedPermanently. + /// + /// + Moved = 301, + /// + /// + /// Equivalent to status code 302. + /// Indicates that the requested resource is located temporarily under a different URI. + /// + /// + /// Found is a synonym for Redirect. + /// + /// + Found = 302, + /// + /// + /// Equivalent to status code 302. + /// Indicates that the requested resource is located temporarily under a different URI. + /// + /// + /// Redirect is a synonym for Found. + /// + /// + Redirect = 302, + /// + /// + /// Equivalent to status code 303. + /// Indicates that the response to the request can be found under a different URI and + /// should be retrieved using a GET method on that resource. + /// + /// + /// SeeOther is a synonym for RedirectMethod. + /// + /// + SeeOther = 303, + /// + /// + /// Equivalent to status code 303. + /// Indicates that the response to the request can be found under a different URI and + /// should be retrieved using a GET method on that resource. + /// + /// + /// RedirectMethod is a synonym for SeeOther. + /// + /// + RedirectMethod = 303, + /// + /// Equivalent to status code 304. + /// Indicates that the client has performed a conditional GET request and access is allowed, + /// but the document hasn't been modified. + /// + NotModified = 304, + /// + /// Equivalent to status code 305. + /// Indicates that the requested resource must be accessed through the proxy given by + /// the Location field. + /// + UseProxy = 305, + /// + /// Equivalent to status code 306. + /// This status code was used in a previous version of the specification, is no longer used, + /// and is reserved for future use. + /// + Unused = 306, + /// + /// + /// Equivalent to status code 307. + /// Indicates that the requested resource is located temporarily under a different URI. + /// + /// + /// TemporaryRedirect is a synonym for RedirectKeepVerb. + /// + /// + TemporaryRedirect = 307, + /// + /// + /// Equivalent to status code 307. + /// Indicates that the requested resource is located temporarily under a different URI. + /// + /// + /// RedirectKeepVerb is a synonym for TemporaryRedirect. + /// + /// + RedirectKeepVerb = 307, + /// + /// Equivalent to status code 400. + /// Indicates that the client's request couldn't be understood by the server due to + /// malformed syntax. + /// + BadRequest = 400, + /// + /// Equivalent to status code 401. + /// Indicates that the client's request requires user authentication. + /// + Unauthorized = 401, + /// + /// Equivalent to status code 402. + /// This status code is reserved for future use. + /// + PaymentRequired = 402, + /// + /// Equivalent to status code 403. + /// Indicates that the server understood the client's request but is refusing to fulfill it. + /// + Forbidden = 403, + /// + /// Equivalent to status code 404. + /// Indicates that the server hasn't found anything matching the request URI. + /// + NotFound = 404, + /// + /// Equivalent to status code 405. + /// Indicates that the method specified in the request line isn't allowed for the resource + /// identified by the request URI. + /// + MethodNotAllowed = 405, + /// + /// Equivalent to status code 406. + /// Indicates that the server doesn't have the appropriate resource to respond to the Accept + /// headers in the client's request. + /// + NotAcceptable = 406, + /// + /// Equivalent to status code 407. + /// Indicates that the client must first authenticate itself with the proxy. + /// + ProxyAuthenticationRequired = 407, + /// + /// Equivalent to status code 408. + /// Indicates that the client didn't produce a request within the time that the server was + /// prepared to wait. + /// + RequestTimeout = 408, + /// + /// Equivalent to status code 409. + /// Indicates that the client's request couldn't be completed due to a conflict on the server. + /// + Conflict = 409, + /// + /// Equivalent to status code 410. + /// Indicates that the requested resource is no longer available at the server and + /// no forwarding address is known. + /// + Gone = 410, + /// + /// Equivalent to status code 411. + /// Indicates that the server refuses to accept the client's request without a defined + /// Content-Length. + /// + LengthRequired = 411, + /// + /// Equivalent to status code 412. + /// Indicates that the precondition given in one or more of the request headers evaluated to + /// false when it was tested on the server. + /// + PreconditionFailed = 412, + /// + /// Equivalent to status code 413. + /// Indicates that the entity of the client's request is larger than the server is willing or + /// able to process. + /// + RequestEntityTooLarge = 413, + /// + /// Equivalent to status code 414. + /// Indicates that the request URI is longer than the server is willing to interpret. + /// + RequestUriTooLong = 414, + /// + /// Equivalent to status code 415. + /// Indicates that the entity of the client's request is in a format not supported by + /// the requested resource for the requested method. + /// + UnsupportedMediaType = 415, + /// + /// Equivalent to status code 416. + /// Indicates that none of the range specifier values in a Range request header overlap + /// the current extent of the selected resource. + /// + RequestedRangeNotSatisfiable = 416, + /// + /// Equivalent to status code 417. + /// Indicates that the expectation given in an Expect request header couldn't be met by + /// the server. + /// + ExpectationFailed = 417, + /// + /// Equivalent to status code 500. + /// Indicates that the server encountered an unexpected condition which prevented it from + /// fulfilling the client's request. + /// + InternalServerError = 500, + /// + /// Equivalent to status code 501. + /// Indicates that the server doesn't support the functionality required to fulfill the client's + /// request. + /// + NotImplemented = 501, + /// + /// Equivalent to status code 502. + /// Indicates that a gateway or proxy server received an invalid response from the upstream + /// server. + /// + BadGateway = 502, + /// + /// Equivalent to status code 503. + /// Indicates that the server is currently unable to handle the client's request due to + /// a temporary overloading or maintenance of the server. + /// + ServiceUnavailable = 503, + /// + /// Equivalent to status code 504. + /// Indicates that a gateway or proxy server didn't receive a timely response from the upstream + /// server or some other auxiliary server. + /// + GatewayTimeout = 504, + /// + /// Equivalent to status code 505. + /// Indicates that the server doesn't support the HTTP version used in the client's request. + /// + HttpVersionNotSupported = 505, + } } diff --git a/SocketHttpListener/Net/HttpStatusDescription.cs b/SocketHttpListener/Net/HttpStatusDescription.cs index 9cc4a8e8ce..a4e42560b9 100644 --- a/SocketHttpListener/Net/HttpStatusDescription.cs +++ b/SocketHttpListener/Net/HttpStatusDescription.cs @@ -1,8 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - namespace SocketHttpListener.Net { internal static class HttpStatusDescription diff --git a/SocketHttpListener/Net/HttpStreamAsyncResult.cs b/SocketHttpListener/Net/HttpStreamAsyncResult.cs index d96988fcef..46944c624a 100644 --- a/SocketHttpListener/Net/HttpStreamAsyncResult.cs +++ b/SocketHttpListener/Net/HttpStreamAsyncResult.cs @@ -47,10 +47,7 @@ namespace SocketHttpListener.Net } } - public object AsyncState - { - get { return _state; } - } + public object AsyncState => _state; public WaitHandle AsyncWaitHandle { diff --git a/SocketHttpListener/Net/ListenerPrefix.cs b/SocketHttpListener/Net/ListenerPrefix.cs index 99bb118e52..edfcb89043 100644 --- a/SocketHttpListener/Net/ListenerPrefix.cs +++ b/SocketHttpListener/Net/ListenerPrefix.cs @@ -1,6 +1,5 @@ using System; using System.Net; -using MediaBrowser.Model.Net; namespace SocketHttpListener.Net { @@ -27,33 +26,21 @@ namespace SocketHttpListener.Net public IPAddress[] Addresses { - get { return _addresses; } - set { _addresses = value; } - } - public bool Secure - { - get { return _secure; } + get => _addresses; + set => _addresses = value; } + public bool Secure => _secure; - public string Host - { - get { return _host; } - } + public string Host => _host; - public int Port - { - get { return _port; } - } + public int Port => _port; - public string Path - { - get { return _path; } - } + public string Path => _path; // Equals and GetHashCode are required to detect duplicates in HttpListenerPrefixCollection. public override bool Equals(object o) { - ListenerPrefix other = o as ListenerPrefix; + var other = o as ListenerPrefix; if (other == null) return false; diff --git a/SocketHttpListener/Net/UriScheme.cs b/SocketHttpListener/Net/UriScheme.cs index 732fc0e7df..33d1f09db6 100644 --- a/SocketHttpListener/Net/UriScheme.cs +++ b/SocketHttpListener/Net/UriScheme.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace SocketHttpListener.Net { internal static class UriScheme diff --git a/SocketHttpListener/Net/WebHeaderCollection.cs b/SocketHttpListener/Net/WebHeaderCollection.cs index ed3cb921ce..34fca808be 100644 --- a/SocketHttpListener/Net/WebHeaderCollection.cs +++ b/SocketHttpListener/Net/WebHeaderCollection.cs @@ -1,13 +1,8 @@ using System; -using System.Collections; using System.Collections.Generic; -using System.Collections.Specialized; -using System.Net; using System.Runtime.InteropServices; -using System.Runtime.Serialization; using System.Text; using MediaBrowser.Model.Services; -using MediaBrowser.Model.Extensions; namespace SocketHttpListener.Net { @@ -213,8 +208,7 @@ namespace SocketHttpListener.Net if (!IsHeaderName(headerName)) throw new ArgumentException("Invalid character in header"); - HeaderInfo info; - if (!headers.TryGetValue(headerName, out info)) + if (!headers.TryGetValue(headerName, out HeaderInfo info)) return false; var flag = response ? HeaderInfo.Response : HeaderInfo.Request; @@ -239,7 +233,7 @@ namespace SocketHttpListener.Net internal string ToStringMultiValue() { - StringBuilder sb = new StringBuilder(); + var sb = new StringBuilder(); int count = base.Count; for (int i = 0; i < count; i++) @@ -268,7 +262,7 @@ namespace SocketHttpListener.Net public override string ToString() { - StringBuilder sb = new StringBuilder(); + var sb = new StringBuilder(); int count = base.Count; for (int i = 0; i < count; i++) @@ -318,8 +312,7 @@ namespace SocketHttpListener.Net if (headerName == null) return false; - HeaderInfo info; - return headers.TryGetValue(headerName, out info) && (info & HeaderInfo.MultiValue) != 0; + return headers.TryGetValue(headerName, out HeaderInfo info) && (info & HeaderInfo.MultiValue) != 0; } internal static bool IsHeaderValue(string value) diff --git a/SocketHttpListener/Net/WebHeaderEncoding.cs b/SocketHttpListener/Net/WebHeaderEncoding.cs index 7290bfc63b..b65ff3c0d5 100644 --- a/SocketHttpListener/Net/WebHeaderEncoding.cs +++ b/SocketHttpListener/Net/WebHeaderEncoding.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; using System.Text; -using System.Threading.Tasks; namespace SocketHttpListener.Net { diff --git a/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs index 49375678dd..5ed49ec47d 100644 --- a/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs +++ b/SocketHttpListener/Net/WebSockets/HttpListenerWebSocketContext.cs @@ -1,14 +1,8 @@ using System; using System.Collections.Generic; -using System.Collections.Specialized; -using System.IO; using System.Net; using System.Security.Principal; -using MediaBrowser.Model.Cryptography; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Net; using MediaBrowser.Model.Services; -using SocketHttpListener.Primitives; namespace SocketHttpListener.Net.WebSockets { diff --git a/SocketHttpListener/Net/WebSockets/HttpWebSocket.Managed.cs b/SocketHttpListener/Net/WebSockets/HttpWebSocket.Managed.cs index 571e4bdbae..1cfd2dc902 100644 --- a/SocketHttpListener/Net/WebSockets/HttpWebSocket.Managed.cs +++ b/SocketHttpListener/Net/WebSockets/HttpWebSocket.Managed.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System; using System.Threading.Tasks; namespace SocketHttpListener.Net.WebSockets @@ -28,12 +26,11 @@ namespace SocketHttpListener.Net.WebSockets string origin = request.Headers[HttpKnownHeaderNames.Origin]; string[] secWebSocketProtocols = null; - string outgoingSecWebSocketProtocolString; bool shouldSendSecWebSocketProtocolHeader = ProcessWebSocketProtocolHeader( request.Headers[HttpKnownHeaderNames.SecWebSocketProtocol], subProtocol, - out outgoingSecWebSocketProtocolString); + out var outgoingSecWebSocketProtocolString); if (shouldSendSecWebSocketProtocolHeader) { @@ -52,15 +49,15 @@ namespace SocketHttpListener.Net.WebSockets response.StatusCode = (int)HttpStatusCode.SwitchingProtocols; // HTTP 101 response.StatusDescription = HttpStatusDescription.Get(HttpStatusCode.SwitchingProtocols); - HttpResponseStream responseStream = response.OutputStream as HttpResponseStream; + var responseStream = response.OutputStream as HttpResponseStream; // Send websocket handshake headers await responseStream.WriteWebSocketHandshakeHeadersAsync().ConfigureAwait(false); //WebSocket webSocket = WebSocket.CreateFromStream(context.Connection.ConnectedStream, isServer: true, subProtocol, keepAliveInterval); - WebSocket webSocket = new WebSocket(subProtocol); + var webSocket = new WebSocket(subProtocol); - HttpListenerWebSocketContext webSocketContext = new HttpListenerWebSocketContext( + var webSocketContext = new HttpListenerWebSocketContext( request.Url, request.Headers, request.Cookies, diff --git a/SocketHttpListener/Net/WebSockets/HttpWebSocket.cs b/SocketHttpListener/Net/WebSockets/HttpWebSocket.cs index f72a139f3a..b346cc98ec 100644 --- a/SocketHttpListener/Net/WebSockets/HttpWebSocket.cs +++ b/SocketHttpListener/Net/WebSockets/HttpWebSocket.cs @@ -1,8 +1,7 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Diagnostics.CodeAnalysis; using System.Security.Cryptography; +using System.Text; using System.Threading; namespace SocketHttpListener.Net.WebSockets @@ -20,7 +19,7 @@ namespace SocketHttpListener.Net.WebSockets string retVal; // SHA1 used only for hashing purposes, not for crypto. Check here for FIPS compat. - using (SHA1 sha1 = SHA1.Create()) + using (var sha1 = SHA1.Create()) { string acceptString = string.Concat(secWebSocketKey, HttpWebSocket.SecWebSocketKeyGuid); byte[] toHash = Encoding.UTF8.GetBytes(acceptString); diff --git a/SocketHttpListener/Net/WebSockets/WebSocketCloseStatus.cs b/SocketHttpListener/Net/WebSockets/WebSocketCloseStatus.cs index b83b6cd0f7..5ac89cf480 100644 --- a/SocketHttpListener/Net/WebSockets/WebSocketCloseStatus.cs +++ b/SocketHttpListener/Net/WebSockets/WebSocketCloseStatus.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace SocketHttpListener.Net.WebSockets { public enum WebSocketCloseStatus diff --git a/SocketHttpListener/Net/WebSockets/WebSocketContext.cs b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs index 071b5fe05b..10ad864398 100644 --- a/SocketHttpListener/Net/WebSockets/WebSocketContext.cs +++ b/SocketHttpListener/Net/WebSockets/WebSocketContext.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Collections.Specialized; using System.Net; using System.Security.Principal; -using MediaBrowser.Model.Net; using MediaBrowser.Model.Services; namespace SocketHttpListener.Net.WebSockets diff --git a/SocketHttpListener/Net/WebSockets/WebSocketValidate.cs b/SocketHttpListener/Net/WebSockets/WebSocketValidate.cs index 00895ea015..0469e3b6c5 100644 --- a/SocketHttpListener/Net/WebSockets/WebSocketValidate.cs +++ b/SocketHttpListener/Net/WebSockets/WebSocketValidate.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; -using MediaBrowser.Model.Net; +using System; using System.Globalization; +using System.Text; using WebSocketState = System.Net.WebSockets.WebSocketState; namespace SocketHttpListener.Net.WebSockets diff --git a/SocketHttpListener/Opcode.cs b/SocketHttpListener/Opcode.cs index 62b7d8585c..69cf3f3728 100644 --- a/SocketHttpListener/Opcode.cs +++ b/SocketHttpListener/Opcode.cs @@ -1,43 +1,43 @@ namespace SocketHttpListener { - /// - /// Contains the values of the opcode that indicates the type of a WebSocket frame. - /// - /// - /// The values of the opcode are defined in - /// Section 5.2 of RFC 6455. - /// - public enum Opcode : byte - { /// - /// Equivalent to numeric value 0. - /// Indicates a continuation frame. + /// Contains the values of the opcode that indicates the type of a WebSocket frame. /// - Cont = 0x0, - /// - /// Equivalent to numeric value 1. - /// Indicates a text frame. - /// - Text = 0x1, - /// - /// Equivalent to numeric value 2. - /// Indicates a binary frame. - /// - Binary = 0x2, - /// - /// Equivalent to numeric value 8. - /// Indicates a connection close frame. - /// - Close = 0x8, - /// - /// Equivalent to numeric value 9. - /// Indicates a ping frame. - /// - Ping = 0x9, - /// - /// Equivalent to numeric value 10. - /// Indicates a pong frame. - /// - Pong = 0xa - } + /// + /// The values of the opcode are defined in + /// Section 5.2 of RFC 6455. + /// + public enum Opcode : byte + { + /// + /// Equivalent to numeric value 0. + /// Indicates a continuation frame. + /// + Cont = 0x0, + /// + /// Equivalent to numeric value 1. + /// Indicates a text frame. + /// + Text = 0x1, + /// + /// Equivalent to numeric value 2. + /// Indicates a binary frame. + /// + Binary = 0x2, + /// + /// Equivalent to numeric value 8. + /// Indicates a connection close frame. + /// + Close = 0x8, + /// + /// Equivalent to numeric value 9. + /// Indicates a ping frame. + /// + Ping = 0x9, + /// + /// Equivalent to numeric value 10. + /// Indicates a pong frame. + /// + Pong = 0xa + } } diff --git a/SocketHttpListener/PayloadData.cs b/SocketHttpListener/PayloadData.cs index a6318da2b8..6d15a6bcb1 100644 --- a/SocketHttpListener/PayloadData.cs +++ b/SocketHttpListener/PayloadData.cs @@ -5,145 +5,126 @@ using System.Text; namespace SocketHttpListener { - internal class PayloadData : IEnumerable - { - #region Private Fields + internal class PayloadData : IEnumerable + { + #region Private Fields - private byte [] _applicationData; - private byte [] _extensionData; - private bool _masked; + private byte[] _applicationData; + private byte[] _extensionData; + private bool _masked; - #endregion + #endregion - #region Public Const Fields + #region Public Const Fields - public const ulong MaxLength = long.MaxValue; + public const ulong MaxLength = long.MaxValue; - #endregion + #endregion - #region Public Constructors + #region Public Constructors - public PayloadData () - : this (new byte [0], new byte [0], false) - { - } + public PayloadData() + : this(new byte[0], new byte[0], false) + { + } - public PayloadData (byte [] applicationData) - : this (new byte [0], applicationData, false) - { - } + public PayloadData(byte[] applicationData) + : this(new byte[0], applicationData, false) + { + } - public PayloadData (string applicationData) - : this (new byte [0], Encoding.UTF8.GetBytes (applicationData), false) - { - } + public PayloadData(string applicationData) + : this(new byte[0], Encoding.UTF8.GetBytes(applicationData), false) + { + } - public PayloadData (byte [] applicationData, bool masked) - : this (new byte [0], applicationData, masked) - { - } + public PayloadData(byte[] applicationData, bool masked) + : this(new byte[0], applicationData, masked) + { + } - public PayloadData (byte [] extensionData, byte [] applicationData, bool masked) - { - _extensionData = extensionData; - _applicationData = applicationData; - _masked = masked; - } + public PayloadData(byte[] extensionData, byte[] applicationData, bool masked) + { + _extensionData = extensionData; + _applicationData = applicationData; + _masked = masked; + } - #endregion + #endregion - #region Internal Properties + #region Internal Properties - internal bool ContainsReservedCloseStatusCode { - get { - return _applicationData.Length > 1 && - _applicationData.SubArray (0, 2).ToUInt16 (ByteOrder.Big).IsReserved (); - } - } + internal bool ContainsReservedCloseStatusCode => + _applicationData.Length > 1 && + _applicationData.SubArray(0, 2).ToUInt16(ByteOrder.Big).IsReserved(); - #endregion + #endregion - #region Public Properties + #region Public Properties - public byte [] ApplicationData { - get { - return _applicationData; - } - } + public byte[] ApplicationData => _applicationData; - public byte [] ExtensionData { - get { - return _extensionData; - } - } + public byte[] ExtensionData => _extensionData; - public bool IsMasked { - get { - return _masked; - } - } + public bool IsMasked => _masked; - public ulong Length { - get { - return (ulong) (_extensionData.Length + _applicationData.Length); - } - } + public ulong Length => (ulong)(_extensionData.Length + _applicationData.Length); - #endregion + #endregion - #region Private Methods + #region Private Methods - private static void mask (byte [] src, byte [] key) - { - for (long i = 0; i < src.Length; i++) - src [i] = (byte) (src [i] ^ key [i % 4]); - } + private static void mask(byte[] src, byte[] key) + { + for (long i = 0; i < src.Length; i++) + src[i] = (byte)(src[i] ^ key[i % 4]); + } - #endregion + #endregion - #region Public Methods + #region Public Methods - public IEnumerator GetEnumerator () - { - foreach (byte b in _extensionData) - yield return b; + public IEnumerator GetEnumerator() + { + foreach (byte b in _extensionData) + yield return b; - foreach (byte b in _applicationData) - yield return b; - } + foreach (byte b in _applicationData) + yield return b; + } - public void Mask (byte [] maskingKey) - { - if (_extensionData.Length > 0) - mask (_extensionData, maskingKey); + public void Mask(byte[] maskingKey) + { + if (_extensionData.Length > 0) + mask(_extensionData, maskingKey); - if (_applicationData.Length > 0) - mask (_applicationData, maskingKey); + if (_applicationData.Length > 0) + mask(_applicationData, maskingKey); - _masked = !_masked; - } + _masked = !_masked; + } - public byte [] ToByteArray () - { - return _extensionData.Length > 0 - ? new List (this).ToArray () - : _applicationData; - } + public byte[] ToByteArray() + { + return _extensionData.Length > 0 + ? new List(this).ToArray() + : _applicationData; + } - public override string ToString () - { - return BitConverter.ToString (ToByteArray ()); - } + public override string ToString() + { + return BitConverter.ToString(ToByteArray()); + } - #endregion + #endregion - #region Explicitly Implemented Interface Members + #region Explicitly Implemented Interface Members - IEnumerator IEnumerable.GetEnumerator () - { - return GetEnumerator (); - } + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } - #endregion - } + #endregion + } } diff --git a/SocketHttpListener/Primitives/ITextEncoding.cs b/SocketHttpListener/Primitives/ITextEncoding.cs index a256a077dc..10d95570dc 100644 --- a/SocketHttpListener/Primitives/ITextEncoding.cs +++ b/SocketHttpListener/Primitives/ITextEncoding.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; using System.Text; -using System.Threading.Tasks; using MediaBrowser.Model.Text; namespace SocketHttpListener.Primitives diff --git a/SocketHttpListener/Rsv.cs b/SocketHttpListener/Rsv.cs index 668059b8a3..87283791ec 100644 --- a/SocketHttpListener/Rsv.cs +++ b/SocketHttpListener/Rsv.cs @@ -1,8 +1,8 @@ namespace SocketHttpListener { - internal enum Rsv : byte - { - Off = 0x0, - On = 0x1 - } + internal enum Rsv : byte + { + Off = 0x0, + On = 0x1 + } } diff --git a/SocketHttpListener/SocketHttpListener.csproj b/SocketHttpListener/SocketHttpListener.csproj index ca9056a6ad..e700540a91 100644 --- a/SocketHttpListener/SocketHttpListener.csproj +++ b/SocketHttpListener/SocketHttpListener.csproj @@ -1,4 +1,4 @@ - + diff --git a/SocketHttpListener/SocketStream.cs b/SocketHttpListener/SocketStream.cs index a4f31eab9b..f51fde97ef 100644 --- a/SocketHttpListener/SocketStream.cs +++ b/SocketHttpListener/SocketStream.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; +using System; using System.IO; -using System.Linq; using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; namespace SocketHttpListener { @@ -21,26 +17,18 @@ namespace SocketHttpListener { } - public override bool CanRead - { - get { return true; } - } - public override bool CanSeek - { - get { return false; } - } - public override bool CanWrite - { - get { return true; } - } - public override long Length - { - get { throw new NotImplementedException(); } - } + public override bool CanRead => true; + + public override bool CanSeek => false; + + public override bool CanWrite => true; + + public override long Length => throw new NotImplementedException(); + public override long Position { - get { throw new NotImplementedException(); } - set { throw new NotImplementedException(); } + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); } public override void Write(byte[] buffer, int offset, int count) diff --git a/SocketHttpListener/WebSocket.cs b/SocketHttpListener/WebSocket.cs index d926a58c92..bf400599d3 100644 --- a/SocketHttpListener/WebSocket.cs +++ b/SocketHttpListener/WebSocket.cs @@ -3,15 +3,12 @@ using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; +using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Cryptography; -using MediaBrowser.Model.IO; using SocketHttpListener.Net.WebSockets; -using SocketHttpListener.Primitives; using HttpStatusCode = SocketHttpListener.Net.HttpStatusCode; -using System.Net.Sockets; using WebSocketState = System.Net.WebSockets.WebSocketState; namespace SocketHttpListener @@ -81,11 +78,8 @@ namespace SocketHttpListener init(); } - public static TimeSpan DefaultKeepAliveInterval - { - // In the .NET Framework, this pulls the value from a P/Invoke. Here we just hardcode it to a reasonable default. - get { return TimeSpan.FromSeconds(30); } - } + // In the .NET Framework, this pulls the value from a P/Invoke. Here we just hardcode it to a reasonable default. + public static TimeSpan DefaultKeepAliveInterval => TimeSpan.FromSeconds(30); #endregion @@ -96,13 +90,7 @@ namespace SocketHttpListener /// One of the enum values, indicates the state of the WebSocket /// connection. The default value is . /// - public WebSocketState ReadyState - { - get - { - return _readyState; - } - } + public WebSocketState ReadyState => _readyState; #region Public Events diff --git a/SocketHttpListener/WebSocketException.cs b/SocketHttpListener/WebSocketException.cs index 260721317c..e86c46d0f5 100644 --- a/SocketHttpListener/WebSocketException.cs +++ b/SocketHttpListener/WebSocketException.cs @@ -2,59 +2,60 @@ using System; namespace SocketHttpListener { - /// - /// The exception that is thrown when a gets a fatal error. - /// - public class WebSocketException : Exception - { - #region Internal Constructors - - internal WebSocketException () - : this (CloseStatusCode.Abnormal, null, null) - { - } - - internal WebSocketException (string message) - : this (CloseStatusCode.Abnormal, message, null) - { - } - - internal WebSocketException (CloseStatusCode code) - : this (code, null, null) - { - } - - internal WebSocketException (string message, Exception innerException) - : this (CloseStatusCode.Abnormal, message, innerException) - { - } - - internal WebSocketException (CloseStatusCode code, string message) - : this (code, message, null) - { - } - - internal WebSocketException (CloseStatusCode code, string message, Exception innerException) - : base (message ?? code.GetMessage (), innerException) - { - Code = code; - } - - #endregion - - #region Public Properties - /// - /// Gets the status code indicating the cause for the exception. + /// The exception that is thrown when a gets a fatal error. /// - /// - /// One of the enum values, represents the status code indicating - /// the cause for the exception. - /// - public CloseStatusCode Code { - get; private set; + public class WebSocketException : Exception + { + #region Internal Constructors + + internal WebSocketException() + : this(CloseStatusCode.Abnormal, null, null) + { + } + + internal WebSocketException(string message) + : this(CloseStatusCode.Abnormal, message, null) + { + } + + internal WebSocketException(CloseStatusCode code) + : this(code, null, null) + { + } + + internal WebSocketException(string message, Exception innerException) + : this(CloseStatusCode.Abnormal, message, innerException) + { + } + + internal WebSocketException(CloseStatusCode code, string message) + : this(code, message, null) + { + } + + internal WebSocketException(CloseStatusCode code, string message, Exception innerException) + : base(message ?? code.GetMessage(), innerException) + { + Code = code; + } + + #endregion + + #region Public Properties + + /// + /// Gets the status code indicating the cause for the exception. + /// + /// + /// One of the enum values, represents the status code indicating + /// the cause for the exception. + /// + public CloseStatusCode Code + { + get; private set; + } + + #endregion } - - #endregion - } } diff --git a/SocketHttpListener/WebSocketFrame.cs b/SocketHttpListener/WebSocketFrame.cs index 44fa4a5dc3..74ed23c457 100644 --- a/SocketHttpListener/WebSocketFrame.cs +++ b/SocketHttpListener/WebSocketFrame.cs @@ -2,7 +2,6 @@ using System; using System.Collections; using System.Collections.Generic; using System.IO; -using System.Text; namespace SocketHttpListener { @@ -107,197 +106,53 @@ namespace SocketHttpListener #region Public Properties - public byte[] ExtendedPayloadLength - { - get - { - return _extPayloadLength; - } - } + public byte[] ExtendedPayloadLength => _extPayloadLength; - public Fin Fin - { - get - { - return _fin; - } - } + public Fin Fin => _fin; - public bool IsBinary - { - get - { - return _opcode == Opcode.Binary; - } - } + public bool IsBinary => _opcode == Opcode.Binary; - public bool IsClose - { - get - { - return _opcode == Opcode.Close; - } - } + public bool IsClose => _opcode == Opcode.Close; - public bool IsCompressed - { - get - { - return _rsv1 == Rsv.On; - } - } + public bool IsCompressed => _rsv1 == Rsv.On; - public bool IsContinuation - { - get - { - return _opcode == Opcode.Cont; - } - } + public bool IsContinuation => _opcode == Opcode.Cont; - public bool IsControl - { - get - { - return _opcode == Opcode.Close || _opcode == Opcode.Ping || _opcode == Opcode.Pong; - } - } + public bool IsControl => _opcode == Opcode.Close || _opcode == Opcode.Ping || _opcode == Opcode.Pong; - public bool IsData - { - get - { - return _opcode == Opcode.Binary || _opcode == Opcode.Text; - } - } + public bool IsData => _opcode == Opcode.Binary || _opcode == Opcode.Text; - public bool IsFinal - { - get - { - return _fin == Fin.Final; - } - } + public bool IsFinal => _fin == Fin.Final; - public bool IsFragmented - { - get - { - return _fin == Fin.More || _opcode == Opcode.Cont; - } - } + public bool IsFragmented => _fin == Fin.More || _opcode == Opcode.Cont; - public bool IsMasked - { - get - { - return _mask == Mask.Mask; - } - } + public bool IsMasked => _mask == Mask.Mask; - public bool IsPerMessageCompressed - { - get - { - return (_opcode == Opcode.Binary || _opcode == Opcode.Text) && _rsv1 == Rsv.On; - } - } + public bool IsPerMessageCompressed => (_opcode == Opcode.Binary || _opcode == Opcode.Text) && _rsv1 == Rsv.On; - public bool IsPing - { - get - { - return _opcode == Opcode.Ping; - } - } + public bool IsPing => _opcode == Opcode.Ping; - public bool IsPong - { - get - { - return _opcode == Opcode.Pong; - } - } + public bool IsPong => _opcode == Opcode.Pong; - public bool IsText - { - get - { - return _opcode == Opcode.Text; - } - } + public bool IsText => _opcode == Opcode.Text; - public ulong Length - { - get - { - return 2 + (ulong)(_extPayloadLength.Length + _maskingKey.Length) + _payloadData.Length; - } - } + public ulong Length => 2 + (ulong)(_extPayloadLength.Length + _maskingKey.Length) + _payloadData.Length; - public Mask Mask - { - get - { - return _mask; - } - } + public Mask Mask => _mask; - public byte[] MaskingKey - { - get - { - return _maskingKey; - } - } + public byte[] MaskingKey => _maskingKey; - public Opcode Opcode - { - get - { - return _opcode; - } - } + public Opcode Opcode => _opcode; - public PayloadData PayloadData - { - get - { - return _payloadData; - } - } + public PayloadData PayloadData => _payloadData; - public byte PayloadLength - { - get - { - return _payloadLength; - } - } + public byte PayloadLength => _payloadLength; - public Rsv Rsv1 - { - get - { - return _rsv1; - } - } + public Rsv Rsv1 => _rsv1; - public Rsv Rsv2 - { - get - { - return _rsv2; - } - } + public Rsv Rsv2 => _rsv2; - public Rsv Rsv3 - { - get - { - return _rsv3; - } - } + public Rsv Rsv3 => _rsv3; #endregion @@ -575,4 +430,4 @@ namespace SocketHttpListener #endregion } -} \ No newline at end of file +} diff --git a/deployment/debian-package-x64/pkg-src/conf/logging.json b/deployment/debian-package-x64/pkg-src/conf/logging.json index 5d98484cdf..f32b2089eb 100644 --- a/deployment/debian-package-x64/pkg-src/conf/logging.json +++ b/deployment/debian-package-x64/pkg-src/conf/logging.json @@ -2,7 +2,8 @@ "Serilog": { "MinimumLevel": "Information", "WriteTo": [ - { "Name": "Console", + { + "Name": "Console", "Args": { "outputTemplate": "[{Timestamp:HH:mm:ss}] [{Level:u3}] {Message:lj}{NewLine}{Exception}" } diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin-firewalld.xml b/deployment/fedora-package-x64/pkg-src/jellyfin-firewalld.xml index 062db370da..538c5d65f8 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin-firewalld.xml +++ b/deployment/fedora-package-x64/pkg-src/jellyfin-firewalld.xml @@ -1,9 +1,9 @@ - Jellyfin - The Free Software Media System. - - - - - \ No newline at end of file + Jellyfin + The Free Software Media System. + + + + + diff --git a/deployment/unraid/docker-templates/jellyfin.xml b/deployment/unraid/docker-templates/jellyfin.xml index be11884248..1d97a9f00f 100644 --- a/deployment/unraid/docker-templates/jellyfin.xml +++ b/deployment/unraid/docker-templates/jellyfin.xml @@ -23,7 +23,7 @@ https://jellyfin.media/ true false - + host @@ -32,7 +32,7 @@ tcp - + /mnt/cache/appdata/config diff --git a/deployment/win-generic/build-jellyfin.ps1 b/deployment/win-generic/build-jellyfin.ps1 index 4f0f925256..7807a46c38 100644 --- a/deployment/win-generic/build-jellyfin.ps1 +++ b/deployment/win-generic/build-jellyfin.ps1 @@ -1,4 +1,4 @@ -[CmdletBinding()] +[CmdletBinding()] param( [switch]$InstallFFMPEG, [switch]$InstallNSSM, @@ -37,7 +37,7 @@ function Install-FFMPEG { Write-Verbose "Checking Architecture" if($Architecture -notin @('x86','x64')){ Write-Warning "No builds available for your selected architecture of $Architecture" - Write-Warning "FFMPEG will not be installed" + Write-Warning "FFMPEG will not be installed" }elseif($Architecture -eq 'x64'){ Write-Verbose "Downloading 64 bit FFMPEG" Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.1-win64-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose @@ -45,7 +45,7 @@ function Install-FFMPEG { Write-Verbose "Downloading 32 bit FFMPEG" Invoke-WebRequest -Uri https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-4.1-win32-static.zip -UseBasicParsing -OutFile "$tempdir/fmmpeg.zip" | Write-Verbose } - + Expand-Archive "$tempdir/fmmpeg.zip" -DestinationPath "$tempdir/ffmpeg/" | Write-Verbose if($Architecture -eq 'x64'){ Write-Verbose "Copying Binaries to Jellyfin location" @@ -70,12 +70,12 @@ function Install-NSSM { Write-Verbose "Checking Architecture" if($Architecture -notin @('x86','x64')){ Write-Warning "No builds available for your selected architecture of $Architecture" - Write-Warning "NSSM will not be installed" + Write-Warning "NSSM will not be installed" }else{ Write-Verbose "Downloading NSSM" Invoke-WebRequest -Uri https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip -UseBasicParsing -OutFile "$tempdir/nssm.zip" | Write-Verbose } - + Expand-Archive "$tempdir/nssm.zip" -DestinationPath "$tempdir/nssm/" | Write-Verbose if($Architecture -eq 'x64'){ Write-Verbose "Copying Binaries to Jellyfin location" diff --git a/jellyfin.code-workspace b/jellyfin.code-workspace new file mode 100644 index 0000000000..7882b38219 --- /dev/null +++ b/jellyfin.code-workspace @@ -0,0 +1,17 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "files.eol": "\n", + "editor.renderWhitespace": "boundary", + "files.exclude": { + "**/bin": true, + "**/jellyfin-web": true, + "**/obj": true + }, + "formatFiles.excludePattern": "**/node_modules,**/.vscode,**/dist/**,**/.chrome,ThirdParty,RSSDP,Mono.Nat,unRaid,debian" + } +}