Skip to content

Commit

Permalink
feat: DanmuPreviewer
Browse files Browse the repository at this point in the history
  • Loading branch information
HMBSbige committed Oct 26, 2023
1 parent 8c98c91 commit e187b01
Show file tree
Hide file tree
Showing 10 changed files with 515 additions and 26 deletions.
26 changes: 26 additions & 0 deletions BilibiliLiveDanmuPreviewer/BilibiliLiveDanmuPreviewer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,30 @@
<OutputType>Exe</OutputType>
</PropertyGroup>

<ItemGroup>
<Content Include="appsettings.json">
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
<PackageReference Include="Microsoft.Extensions.Http" Version="7.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Validation" Version="17.6.11" />
<PackageReference Include="Serilog" Version="3.0.1" />
<PackageReference Include="Serilog.Extensions.Hosting" Version="7.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="7.0.1" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="System.Reactive" Version="6.0.0" />
<PackageReference Include="Volo.Abp.Autofac" Version="7.4.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\BilibiliLiveRecordDownLoader.BilibiliApi\BilibiliLiveRecordDownLoader.BilibiliApi.csproj" />
</ItemGroup>

</Project>
91 changes: 91 additions & 0 deletions BilibiliLiveDanmuPreviewer/BilibiliLiveDanmuPreviewerModule.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
global using BilibiliApi.Clients;
global using BilibiliApi.Model.RoomInfo;
global using BilibiliLiveDanmuPreviewer;
global using JetBrains.Annotations;
global using Microsoft;
global using Microsoft.Extensions.Configuration;
global using Microsoft.Extensions.DependencyInjection;
global using Microsoft.Extensions.DependencyInjection.Extensions;
global using Microsoft.Extensions.Logging;
global using Serilog;
global using System.Net;
global using System.Reactive.Linq;
global using Volo.Abp;
global using Volo.Abp.Autofac;
global using Volo.Abp.DependencyInjection;
global using Volo.Abp.Modularity;
global using ILogger = Microsoft.Extensions.Logging.ILogger;

namespace BilibiliLiveDanmuPreviewer;

[DependsOn(
typeof(AbpAutofacModule)
)]
[UsedImplicitly]
internal class BilibiliLiveDanmuPreviewerModule : AbpModule
{
public override Task PreConfigureServicesAsync(ServiceConfigurationContext context)
{
context.Services.ReplaceConfiguration(new ConfigurationBuilder().AddJsonFile(@"appsettings.json", true, true).Build());

return Task.CompletedTask;
}

public override Task ConfigureServicesAsync(ServiceConfigurationContext context)
{
IConfiguration configuration = context.Services.GetConfiguration();

context.Services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger(), true));
#if DEBUG
Serilog.Debugging.SelfLog.Enable(msg =>
{
System.Diagnostics.Debug.Print(msg);
System.Diagnostics.Debugger.Break();
});
#endif

context.Services.AddHttpClient(@"bilibili").ConfigureHttpClient((provider, client) =>
{
client.DefaultRequestVersion = HttpVersion.Version20;
client.Timeout = TimeSpan.FromSeconds(10);
client.DefaultRequestHeaders.Accept.ParseAdd(@"application/json, text/javascript, */*; q=0.01");
client.DefaultRequestHeaders.Referrer = new Uri(@"https://live.bilibili.com/");
IConfiguration config = provider.GetRequiredService<IConfiguration>();
IConfigurationSection httpClientConfig = config.GetSection(@"HttpClient");
string? cookie = httpClientConfig.GetValue<string>(@"Cookie");
string? userAgent = httpClientConfig.GetValue<string>(@"UserAgent");
if (!string.IsNullOrWhiteSpace(cookie))
{
client.DefaultRequestHeaders.Add(@"Cookie", cookie);
}
if (!string.IsNullOrWhiteSpace(userAgent))
{
client.DefaultRequestHeaders.UserAgent.Clear();
client.DefaultRequestHeaders.UserAgent.ParseAdd(userAgent);
}
});

context.Services.TryAddSingleton(provider =>
{
IHttpClientFactory httpClientFactory = provider.GetRequiredService<IHttpClientFactory>();
return new BilibiliApiClient(httpClientFactory.CreateClient(@"bilibili"));
});

context.Services.AddDistributedMemoryCache();

context.Services.TryAddTransient<IDanmuClient, WssDanmuClient>();

return Task.CompletedTask;
}

public override Task OnApplicationShutdownAsync(ApplicationShutdownContext context)
{
context.ServiceProvider.GetRequiredService<ILoggerProvider>().Dispose();

return Task.CompletedTask;
}
}
11 changes: 11 additions & 0 deletions BilibiliLiveDanmuPreviewer/InteractiveType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace BilibiliLiveDanmuPreviewer;

public enum InteractiveType
{
进入 = 1,
关注 = 2,
分享直播间 = 3,
特别关注 = 4,
互相关注 = 5,
点赞 = 6
}
Loading

0 comments on commit e187b01

Please sign in to comment.