BililiveRecorder/BililiveRecorder.Core/Api/ModelExtensions.cs

33 lines
995 B
C#

using System;
using System.Linq;
using BililiveRecorder.Core.Api.Model;
namespace BililiveRecorder.Core.Api
{
internal static class ModelExtensions
{
private static readonly Random random = new Random();
public static void ChooseOne(this DanmuInfo danmuInfo, out string host, out int port, out string token)
{
const string DefaultServerHost = "broadcastlv.chat.bilibili.com";
const int DefaultServerPort = 2243;
token = danmuInfo.Token;
var list = danmuInfo.HostList.Where(x => !string.IsNullOrWhiteSpace(x.Host) && x.Host != DefaultServerHost && x.Port > 0).ToArray();
if (list.Length > 0)
{
var result = list[random.Next(list.Length)];
host = result.Host;
port = result.Port;
}
else
{
host = DefaultServerHost;
port = DefaultServerPort;
}
}
}
}