mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-05 21:33:02 +02:00
Use new ReadAllLines extensions
This commit is contained in:
parent
95b1cf532b
commit
ddb04dc12b
|
@ -10,6 +10,7 @@ using System.Text.Json;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Json;
|
using MediaBrowser.Common.Json;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
@ -307,13 +308,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
using (var reader = new StreamReader(source))
|
using (var reader = new StreamReader(source))
|
||||||
{
|
{
|
||||||
while (!reader.EndOfStream)
|
await foreach (var line in reader.ReadAllLinesAsync().ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
var line = await reader.ReadLineAsync().ConfigureAwait(false);
|
|
||||||
|
|
||||||
var bytes = Encoding.UTF8.GetBytes(Environment.NewLine + line);
|
var bytes = Encoding.UTF8.GetBytes(Environment.NewLine + line);
|
||||||
|
|
||||||
await target.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
|
await target.WriteAsync(bytes.AsMemory()).ConfigureAwait(false);
|
||||||
await target.FlushAsync().ConfigureAwait(false);
|
await target.FlushAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,16 +182,16 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
|
await using var stream = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);
|
||||||
using var sr = new StreamReader(stream, System.Text.Encoding.UTF8);
|
using var sr = new StreamReader(stream, System.Text.Encoding.UTF8);
|
||||||
var tuners = new List<LiveTvTunerInfo>();
|
var tuners = new List<LiveTvTunerInfo>();
|
||||||
while (!sr.EndOfStream)
|
await foreach (var line in sr.ReadAllLinesAsync().ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
string line = StripXML(sr.ReadLine());
|
string stripedLine = StripXML(line);
|
||||||
if (line.Contains("Channel", StringComparison.Ordinal))
|
if (stripedLine.Contains("Channel", StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
LiveTvTunerStatus status;
|
LiveTvTunerStatus status;
|
||||||
var index = line.IndexOf("Channel", StringComparison.OrdinalIgnoreCase);
|
var index = stripedLine.IndexOf("Channel", StringComparison.OrdinalIgnoreCase);
|
||||||
var name = line.Substring(0, index - 1);
|
var name = stripedLine.Substring(0, index - 1);
|
||||||
var currentChannel = line.Substring(index + 7);
|
var currentChannel = stripedLine.Substring(index + 7);
|
||||||
if (currentChannel != "none")
|
if (string.Equals(currentChannel, "none", StringComparison.Ordinal))
|
||||||
{
|
{
|
||||||
status = LiveTvTunerStatus.LiveTv;
|
status = LiveTvTunerStatus.LiveTv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,16 +35,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||||
// Read the file and display it line by line.
|
// Read the file and display it line by line.
|
||||||
using (var reader = new StreamReader(await GetListingsStream(info, cancellationToken).ConfigureAwait(false)))
|
using (var reader = new StreamReader(await GetListingsStream(info, cancellationToken).ConfigureAwait(false)))
|
||||||
{
|
{
|
||||||
return GetChannels(reader, channelIdPrefix, info.Id);
|
return await GetChannelsAsync(reader, channelIdPrefix, info.Id).ConfigureAwait(false);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<ChannelInfo> ParseString(string text, string channelIdPrefix, string tunerHostId)
|
|
||||||
{
|
|
||||||
// Read the file and display it line by line.
|
|
||||||
using (var reader = new StringReader(text))
|
|
||||||
{
|
|
||||||
return GetChannels(reader, channelIdPrefix, tunerHostId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,43 +61,42 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
||||||
|
|
||||||
private const string ExtInfPrefix = "#EXTINF:";
|
private const string ExtInfPrefix = "#EXTINF:";
|
||||||
|
|
||||||
private List<ChannelInfo> GetChannels(TextReader reader, string channelIdPrefix, string tunerHostId)
|
private async Task<List<ChannelInfo>> GetChannelsAsync(TextReader reader, string channelIdPrefix, string tunerHostId)
|
||||||
{
|
{
|
||||||
var channels = new List<ChannelInfo>();
|
var channels = new List<ChannelInfo>();
|
||||||
string line;
|
|
||||||
string extInf = string.Empty;
|
string extInf = string.Empty;
|
||||||
|
|
||||||
while ((line = reader.ReadLine()) != null)
|
await foreach (var line in reader.ReadAllLinesAsync().ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
line = line.Trim();
|
var trimmedLine = line.Trim();
|
||||||
if (string.IsNullOrWhiteSpace(line))
|
if (string.IsNullOrWhiteSpace(trimmedLine))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (line.StartsWith("#EXTM3U", StringComparison.OrdinalIgnoreCase))
|
if (trimmedLine.StartsWith("#EXTM3U", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (line.StartsWith(ExtInfPrefix, StringComparison.OrdinalIgnoreCase))
|
if (trimmedLine.StartsWith(ExtInfPrefix, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
extInf = line.Substring(ExtInfPrefix.Length).Trim();
|
extInf = trimmedLine.Substring(ExtInfPrefix.Length).Trim();
|
||||||
_logger.LogInformation("Found m3u channel: {0}", extInf);
|
_logger.LogInformation("Found m3u channel: {0}", extInf);
|
||||||
}
|
}
|
||||||
else if (!string.IsNullOrWhiteSpace(extInf) && !line.StartsWith('#'))
|
else if (!string.IsNullOrWhiteSpace(extInf) && !trimmedLine.StartsWith('#'))
|
||||||
{
|
{
|
||||||
var channel = GetChannelnfo(extInf, tunerHostId, line);
|
var channel = GetChannelnfo(extInf, tunerHostId, trimmedLine);
|
||||||
if (string.IsNullOrWhiteSpace(channel.Id))
|
if (string.IsNullOrWhiteSpace(channel.Id))
|
||||||
{
|
{
|
||||||
channel.Id = channelIdPrefix + line.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
channel.Id = channelIdPrefix + trimmedLine.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
channel.Id = channelIdPrefix + channel.Id.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
channel.Id = channelIdPrefix + channel.Id.GetMD5().ToString("N", CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
channel.Path = line;
|
channel.Path = trimmedLine;
|
||||||
channels.Add(channel);
|
channels.Add(channel);
|
||||||
extInf = string.Empty;
|
extInf = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Json;
|
using MediaBrowser.Common.Json;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -72,8 +73,7 @@ namespace Emby.Server.Implementations.Localization
|
||||||
using (var str = _assembly.GetManifestResourceStream(resource))
|
using (var str = _assembly.GetManifestResourceStream(resource))
|
||||||
using (var reader = new StreamReader(str))
|
using (var reader = new StreamReader(str))
|
||||||
{
|
{
|
||||||
string line;
|
await foreach (var line in reader.ReadAllLinesAsync().ConfigureAwait(false))
|
||||||
while ((line = await reader.ReadLineAsync().ConfigureAwait(false)) != null)
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(line))
|
if (string.IsNullOrWhiteSpace(line))
|
||||||
{
|
{
|
||||||
|
@ -118,10 +118,8 @@ namespace Emby.Server.Implementations.Localization
|
||||||
using (var stream = _assembly.GetManifestResourceStream(ResourcePath))
|
using (var stream = _assembly.GetManifestResourceStream(ResourcePath))
|
||||||
using (var reader = new StreamReader(stream))
|
using (var reader = new StreamReader(stream))
|
||||||
{
|
{
|
||||||
while (!reader.EndOfStream)
|
await foreach (var line in reader.ReadAllLinesAsync().ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
var line = await reader.ReadLineAsync().ConfigureAwait(false);
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(line))
|
if (string.IsNullOrWhiteSpace(line))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -179,7 +177,7 @@ namespace Emby.Server.Implementations.Localization
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IEnumerable<CountryInfo> GetCountries()
|
public IEnumerable<CountryInfo> GetCountries()
|
||||||
{
|
{
|
||||||
StreamReader reader = new StreamReader(_assembly.GetManifestResourceStream("Emby.Server.Implementations.Localization.countries.json"));
|
using StreamReader reader = new StreamReader(_assembly.GetManifestResourceStream("Emby.Server.Implementations.Localization.countries.json"));
|
||||||
|
|
||||||
return JsonSerializer.Deserialize<IEnumerable<CountryInfo>>(reader.ReadToEnd(), _jsonOptions);
|
return JsonSerializer.Deserialize<IEnumerable<CountryInfo>>(reader.ReadToEnd(), _jsonOptions);
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,10 +118,7 @@ namespace Jellyfin.Api.Helpers
|
||||||
/// <returns>The playlist text as a string.</returns>
|
/// <returns>The playlist text as a string.</returns>
|
||||||
public static string GetLivePlaylistText(string path, StreamState state)
|
public static string GetLivePlaylistText(string path, StreamState state)
|
||||||
{
|
{
|
||||||
using var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
var text = File.ReadAllText(path);
|
||||||
using var reader = new StreamReader(stream);
|
|
||||||
|
|
||||||
var text = reader.ReadToEnd();
|
|
||||||
|
|
||||||
var segmentFormat = EncodingHelper.GetSegmentFileExtension(state.Request.SegmentContainer).TrimStart('.');
|
var segmentFormat = EncodingHelper.GetSegmentFileExtension(state.Request.SegmentContainer).TrimStart('.');
|
||||||
if (string.Equals(segmentFormat, "mp4", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(segmentFormat, "mp4", StringComparison.OrdinalIgnoreCase))
|
||||||
|
|
|
@ -35,11 +35,11 @@ namespace MediaBrowser.Common.Extensions
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reads all lines in the <see cref="StreamReader" />.
|
/// Reads all lines in the <see cref="TextReader" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="reader">The <see cref="StreamReader" /> to read from.</param>
|
/// <param name="reader">The <see cref="TextReader" /> to read from.</param>
|
||||||
/// <returns>All lines in the stream.</returns>
|
/// <returns>All lines in the stream.</returns>
|
||||||
public static IEnumerable<string> ReadAllLines(this StreamReader reader)
|
public static IEnumerable<string> ReadAllLines(this TextReader reader)
|
||||||
{
|
{
|
||||||
string? line;
|
string? line;
|
||||||
while ((line = reader.ReadLine()) != null)
|
while ((line = reader.ReadLine()) != null)
|
||||||
|
@ -47,5 +47,19 @@ namespace MediaBrowser.Common.Extensions
|
||||||
yield return line;
|
yield return line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reads all lines in the <see cref="TextReader" />.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="reader">The <see cref="TextReader" /> to read from.</param>
|
||||||
|
/// <returns>All lines in the stream.</returns>
|
||||||
|
public static async IAsyncEnumerable<string> ReadAllLinesAsync(this TextReader reader)
|
||||||
|
{
|
||||||
|
string? line;
|
||||||
|
while ((line = await reader.ReadLineAsync().ConfigureAwait(false)) != null)
|
||||||
|
{
|
||||||
|
yield return line;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
|
@ -177,13 +178,11 @@ namespace MediaBrowser.Providers.Studios
|
||||||
{
|
{
|
||||||
var lines = new List<string>();
|
var lines = new List<string>();
|
||||||
|
|
||||||
while (!reader.EndOfStream)
|
foreach (var line in reader.ReadAllLines())
|
||||||
{
|
{
|
||||||
var text = reader.ReadLine();
|
if (!string.IsNullOrWhiteSpace(line))
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(text))
|
|
||||||
{
|
{
|
||||||
lines.Add(text);
|
lines.Add(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue