Skip to content

Commit

Permalink
Merge pull request #841 from RayWangQvQ/fix/824-qinglong-removed-auth…
Browse files Browse the repository at this point in the history
…-file

[824] Log cookie when qinglong save env failed
  • Loading branch information
RayWangQvQ authored Feb 16, 2025
2 parents f027176 + 67e6b4e commit ad4d8c9
Show file tree
Hide file tree
Showing 4 changed files with 347 additions and 376 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
## 2.2.0
- Migrate from dotnet 6.0 to dotnet 8.0
- Add Bruno to document the APIs
- Fix[#824]: Log cookie when qinglong save env failed
## 2.1.3
- Code refactory
- Fix[#791]:修复VipBigPoint任务异常导致终止的问题
## 2.1.2
- Feature: enhancement CICD scripts
- Fix[#728]: compatible with qinglong history versions
- Fix[#728]: compatible with qinglong history versions
## 2.1.1
- Feature: listen ctrl+c at the very beginning
- Fix: fix qinglong read cron error
Expand Down
107 changes: 41 additions & 66 deletions src/Ray.BiliBiliTool.Application/LoginTaskAppService.cs
Original file line number Diff line number Diff line change
@@ -1,88 +1,63 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using QRCoder;
using Ray.BiliBiliTool.Agent;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos.Passport;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces;
using Ray.BiliBiliTool.Agent.QingLong;
using Ray.BiliBiliTool.Application.Attributes;
using Ray.BiliBiliTool.Application.Contracts;
using Ray.BiliBiliTool.Infrastructure.Enums;
using System.Threading;
using Ray.BiliBiliTool.DomainService.Interfaces;
using Ray.BiliBiliTool.Infrastructure.Cookie;

namespace Ray.BiliBiliTool.Application
namespace Ray.BiliBiliTool.Application;

public class LoginTaskAppService(
IConfiguration configuration,
ILogger<LoginTaskAppService> logger,
ILoginDomainService loginDomainService)
: AppService, ILoginTaskAppService
{
public class LoginTaskAppService : AppService, ILoginTaskAppService
[TaskInterceptor("扫码登录", TaskLevel.One)]
public override async Task DoTaskAsync(CancellationToken cancellationToken = default)
{
private readonly ILogger<LoginTaskAppService> _logger;
private readonly ILoginDomainService _loginDomainService;
private readonly IConfiguration _configuration;
//扫码登录
var cookieInfo = await QrCodeLoginAsync(cancellationToken);
if (cookieInfo == null) return;

public LoginTaskAppService(
IConfiguration configuration,
ILogger<LoginTaskAppService> logger,
ILoginDomainService loginDomainService)
{
_configuration = configuration;
_logger = logger;
_loginDomainService = loginDomainService;
}
//set cookie
cookieInfo = await SetCookiesAsync(cookieInfo, cancellationToken);

[TaskInterceptor("扫码登录", TaskLevel.One)]
public override async Task DoTaskAsync(CancellationToken cancellationToken)
{
//扫码登录
var cookieInfo = await QrCodeLoginAsync(cancellationToken);
if (cookieInfo == null) return;
//持久化cookie
await SaveCookieAsync(cookieInfo, cancellationToken);
}

//set cookie
cookieInfo = await SetCookiesAsync(cookieInfo, cancellationToken);
[TaskInterceptor("获取二维码")]
private async Task<BiliCookie> QrCodeLoginAsync(CancellationToken cancellationToken)
{
var biliCookie = await loginDomainService.LoginByQrCodeAsync(cancellationToken);
return biliCookie;
}

//持久化cookie
await SaveCookieAsync(cookieInfo, cancellationToken);
}
[TaskInterceptor("Set Cookie")]
private async Task<BiliCookie> SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken)
{
var ck= await loginDomainService.SetCookieAsync(biliCookie, cancellationToken);
return ck;
}

[TaskInterceptor("获取二维码", TaskLevel.Two)]
protected async Task<BiliCookie> QrCodeLoginAsync(CancellationToken cancellationToken)
{
var biliCookie = await _loginDomainService.LoginByQrCodeAsync(cancellationToken);
return biliCookie;
}
[TaskInterceptor("持久化Cookie")]
private async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken)
{
var platformType = configuration.GetSection("PlateformType").Get<PlatformType>();
logger.LogInformation("当前运行平台:{platform}",platformType);

[TaskInterceptor("Set Cookie", TaskLevel.Two)]
protected async Task<BiliCookie> SetCookiesAsync(BiliCookie biliCookie, CancellationToken cancellationToken)
//更新cookie到青龙env
if (platformType == PlatformType.QingLong)
{
var ck= await _loginDomainService.SetCookieAsync(biliCookie, cancellationToken);
return ck;
await loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken);
return;
}

[TaskInterceptor("持久化Cookie", TaskLevel.Two)]
protected async Task SaveCookieAsync(BiliCookie ckInfo, CancellationToken cancellationToken)
{
var platformType = _configuration.GetSection("PlateformType").Get<PlatformType>();
_logger.LogInformation("当前运行平台:{platform}",platformType);

//更新cookie到青龙env
if (platformType == PlatformType.QingLong)
{
await _loginDomainService.SaveCookieToQinLongAsync(ckInfo, cancellationToken);
return;
}

//更新cookie到json
await _loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken);
}
//更新cookie到json
await loginDomainService.SaveCookieToJsonFileAsync(ckInfo, cancellationToken);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,38 +1,38 @@
using System.Threading;
using System.Threading.Tasks;
using Ray.BiliBiliTool.Agent;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;

namespace Ray.BiliBiliTool.DomainService.Interfaces
namespace Ray.BiliBiliTool.DomainService.Interfaces;

/// <summary>
/// 账户
/// </summary>
public interface ILoginDomainService : IDomainService
{
/// <summary>
/// 账户
/// 扫描二维码登录
/// </summary>
public interface ILoginDomainService : IDomainService
{
/// <summary>
/// 扫描二维码登录
/// </summary>
/// <returns></returns>
Task<BiliCookie> LoginByQrCodeAsync(CancellationToken cancellationToken);
/// <returns></returns>
Task<BiliCookie> LoginByQrCodeAsync(CancellationToken cancellationToken);

/// <summary>
/// Set Cookie
/// </summary>
/// <param name="cookie"></param>
/// <returns></returns>
Task<BiliCookie> SetCookieAsync(BiliCookie cookie, CancellationToken cancellationToken);
/// <summary>
/// Set Cookie
/// </summary>
/// <param name="cookie"></param>
/// <returns></returns>
Task<BiliCookie> SetCookieAsync(BiliCookie cookie, CancellationToken cancellationToken);

/// <summary>
/// 持久化Cookie到配置文件
/// </summary>
/// <returns></returns>
Task SaveCookieToJsonFileAsync(BiliCookie ckInfo, CancellationToken cancellationToken);
/// <summary>
/// 持久化Cookie到配置文件
/// </summary>
/// <returns></returns>
Task SaveCookieToJsonFileAsync(BiliCookie ckInfo, CancellationToken cancellationToken);

/// <summary>
/// 持久化Cookie到青龙环境变量
/// </summary>
/// <returns></returns>
Task SaveCookieToQinLongAsync(BiliCookie ckInfo, CancellationToken cancellationToken);
}
}
/// <summary>
/// 持久化Cookie到青龙环境变量
/// </summary>
/// <param name="ckInfo"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
Task<bool> SaveCookieToQinLongAsync(BiliCookie ckInfo, CancellationToken cancellationToken);
}
Loading

0 comments on commit ad4d8c9

Please sign in to comment.