Skip to content

Commit

Permalink
不需要Cookie的接口不传递Cookie
Browse files Browse the repository at this point in the history
  • Loading branch information
RayWangQvQ committed Feb 10, 2021
1 parent be66a50 commit 31fe7a6
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 58 deletions.
91 changes: 49 additions & 42 deletions src/Ray.BiliBiliTool.Agent/BiliBiliAgent/Interfaces/IVideoApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,48 +12,6 @@ namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
[Header("Host", "api.bilibili.com")]
public interface IVideoApi : IBiliBiliApi
{
/// <summary>
/// 获取视频详情
/// </summary>
/// <param name="aid"></param>
/// <returns></returns>
[HttpGet("/x/web-interface/view?aid={aid}")]
Task<BiliApiResponse<VideoDetail>> GetVideoDetail(string aid);

/// <summary>
/// 获取某分区下X日内排行榜
/// </summary>
/// <param name="rid"></param>
/// <param name="day"></param>
/// <returns></returns>
[Header("Referer", "https://www.bilibili.com/")]
[Header("Origin", "https://www.bilibili.com")]
[HttpGet("/x/web-interface/ranking/region?rid={rid}&day={day}")]
[Obsolete]
Task<BiliApiResponse<List<RankingInfo>>> GetRegionRankingVideos(int rid, int day);

/// <summary>
/// 获取排行榜
/// </summary>
/// <returns></returns>
[Header("Referer", "https://www.bilibili.com/")]
[Header("Origin", "https://www.bilibili.com")]
[HttpGet("/x/web-interface/ranking/v2?rid=0&type=all")]
Task<BiliApiResponse<Ranking>> GetRegionRankingVideosV2();

/// <summary>
/// 搜索指定Up的视频列表
/// </summary>
/// <param name="upId"></param>
/// <param name="pageSize">[1,100]验证不通过接口会报异常</param>
/// <param name="pageNumber"></param>
/// <param name="keyword"></param>
/// <returns></returns>
[Header("Referer", "https://space.bilibili.com/")]
[Header("Origin", "https://space.bilibili.com")]
[HttpGet("/x/space/arc/search?mid={upId}&ps={pageSize}&tid=0&pn={pageNumber}&keyword={keyword}&order=pubdate&jsonp=jsonp")]
Task<BiliApiResponse<SearchUpVideosResponse>> SearchVideosByUpId(long upId, int pageSize = 30, int pageNumber = 1, string keyword = "");

/// <summary>
/// 分享视频
/// </summary>
Expand Down Expand Up @@ -102,4 +60,53 @@ public interface IVideoApi : IBiliBiliApi
Task<BiliApiResponse<DonatedCoinsForVideo>> GetDonatedCoinsForVideo(GetAlreadyDonatedCoinsRequest request);
#endregion
}

/// <summary>
/// 不需要传递Cookie的接口
/// </summary>
public interface IVideoWithoutCookieApi : IVideoApi
{
/// <summary>
/// 获取视频详情
/// </summary>
/// <param name="aid"></param>
/// <returns></returns>
[HttpGet("/x/web-interface/view?aid={aid}")]
Task<BiliApiResponse<VideoDetail>> GetVideoDetail(string aid);

/// <summary>
/// 获取某分区下X日内排行榜
/// </summary>
/// <param name="rid"></param>
/// <param name="day"></param>
/// <returns></returns>
[Header("Referer", "https://www.bilibili.com/")]
[Header("Origin", "https://www.bilibili.com")]
[HttpGet("/x/web-interface/ranking/region?rid={rid}&day={day}")]
[Obsolete]
Task<BiliApiResponse<List<RankingInfo>>> GetRegionRankingVideos(int rid, int day);

/// <summary>
/// 获取排行榜
/// </summary>
/// <returns></returns>
[Header("Referer", "https://www.bilibili.com/")]
[Header("Origin", "https://www.bilibili.com")]
[HttpGet("/x/web-interface/ranking/v2?rid=0&type=all")]
Task<BiliApiResponse<Ranking>> GetRegionRankingVideosV2();

/// <summary>
/// 搜索指定Up的视频列表
/// </summary>
/// <param name="upId"></param>
/// <param name="pageSize">[1,100]验证不通过接口会报异常</param>
/// <param name="pageNumber"></param>
/// <param name="keyword"></param>
/// <returns></returns>
[Header("Referer", "https://space.bilibili.com/")]
[Header("Origin", "https://space.bilibili.com")]
[HttpGet("/x/space/arc/search?mid={upId}&ps={pageSize}&tid=0&pn={pageNumber}&keyword={keyword}&order=pubdate&jsonp=jsonp")]
Task<BiliApiResponse<SearchUpVideosResponse>> SearchVideosByUpId(long upId, int pageSize = 30, int pageNumber = 1, string keyword = "");

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,10 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
services.AddBiliBiliClientApi<IAccountApi>("https://account.bilibili.com");
services.AddBiliBiliClientApi<ILiveApi>("https://api.live.bilibili.com");
services.AddBiliBiliClientApi<IRelationApi>("https://api.bilibili.com");
services.AddBiliBiliClientApi<IVideoApi>("https://api.bilibili.com");
services.AddBiliBiliClientApi<IChargeApi>("https://api.bilibili.com");
services.AddBiliBiliClientApi<IUserInfoApi>("https://api.bilibili.com");
services.AddBiliBiliClientApi<IVideoApi>("https://api.bilibili.com");
services.AddBiliBiliClientApi<IVideoWithoutCookieApi>("https://api.bilibili.com", false);

return services;
}
Expand All @@ -53,11 +54,11 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
/// <param name="services"></param>
/// <param name="host"></param>
/// <returns></returns>
private static IServiceCollection AddBiliBiliClientApi<TInterface>(this IServiceCollection services, string host)
private static IServiceCollection AddBiliBiliClientApi<TInterface>(this IServiceCollection services, string host, bool withCookie = true)
where TInterface : class
{
var uri = new Uri(host);
services
var handler = services
.AddHttpApi<TInterface>(o =>
{
o.HttpHost = uri;
Expand All @@ -68,15 +69,17 @@ private static IServiceCollection AddBiliBiliClientApi<TInterface>(this IService
c.DefaultRequestHeaders.Add("User-Agent",
sp.GetRequiredService<IOptionsMonitor<SecurityOptions>>().CurrentValue.UserAgent);
})
.ConfigurePrimaryHttpMessageHandler(sp =>
.AddHttpMessageHandler<IntervalDelegatingHandler>();

if (withCookie)
handler.ConfigurePrimaryHttpMessageHandler(sp =>
{
var handler = new HttpClientHandler
{
CookieContainer = sp.GetRequiredService<BiliCookie>().CreateCookieContainer(uri)
};
return handler;
})
.AddHttpMessageHandler<IntervalDelegatingHandler>();
});

return services;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Ray.BiliBiliTool.Console/appsettings.Development.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"DailyTaskConfig": {
"SupportUpIds": ",341688380,",
"SupportUpIds": ",341688380,341688380,",
"AutoChargeUpId": "341688380"
},
"Security": {
Expand Down
2 changes: 1 addition & 1 deletion src/Ray.BiliBiliTool.Console/appsettings.Production.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"DailyTaskConfig": {
"SupportUpIds": ",341688380,",
"SupportUpIds": ",341688380,341688380,",
"AutoChargeUpId": "341688380"
},
//用于UT验证
Expand Down
4 changes: 2 additions & 2 deletions src/Ray.BiliBiliTool.Console/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
"DailyTaskConfig": {
"NumberOfCoins": 5, //每日设定的投币数 [0,5]
"SelectLike": true, //投币时是否同时点赞[false,true]
"SupportUpIds": "", //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置或配置为-1则表示没有特别支持的up,会从关注和排行耪中随机获取支持视频
"SupportUpIds": ",341688380,341688380,", //优先选择支持的up主Id集合,多个以英文逗号分隔,如:"123,456"。配置后会优先从指定的up主下挑选视频进行观看、分享和投币,不配置或配置为-1则表示没有特别支持的up,会从关注和排行耪中随机获取支持视频
"DayOfAutoCharge": -1, //每月几号自动充电的[-1,31],-1表示不指定,默认月底最后一天;0表示不充电
"AutoChargeUpId": "-1", //指定支持的UP主Id,-1表示自己
"AutoChargeUpId": "341688380", //指定支持的UP主Id,-1表示自己
"ChargeComment": "加油~", //充电后留言
"DayOfReceiveVipPrivilege": 1, //每月几号自动领取会员权益的[-1,31],-1表示不指定,默认每月1号;0表示不自动领取
"DayOfExchangeSilver2Coin": 0, //每月几号执行银瓜子兑换硬币[-1,31],-1表示不指定,默认每月最后一天;-2表示每天;0表示不进行兑换
Expand Down
14 changes: 9 additions & 5 deletions src/Ray.BiliBiliTool.DomainService/VideoDomainService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class VideoDomainService : IVideoDomainService
private readonly Dictionary<string, int> _expDic;
private readonly IRelationApi _relationApi;
private readonly IVideoApi _videoApi;
private readonly IVideoWithoutCookieApi _videoWithoutCookieApi;

public VideoDomainService(
ILogger<VideoDomainService> logger,
Expand All @@ -33,13 +34,15 @@ public VideoDomainService(
IOptionsMonitor<DailyTaskOptions> dailyTaskOptions,
IOptionsMonitor<Dictionary<string, int>> dicOptions,
IRelationApi relationApi,
IVideoApi videoApi
IVideoApi videoApi,
IVideoWithoutCookieApi videoWithoutCookieApi
)
{
_logger = logger;
_dailyTaskApi = dailyTaskApi;
_relationApi = relationApi;
_videoApi = videoApi;
_videoWithoutCookieApi = videoWithoutCookieApi;
_biliBiliCookie = biliBiliCookie;
_expDic = dicOptions.Get(Constants.OptionsNames.ExpDictionaryName);
_dailyTaskOptions = dailyTaskOptions.CurrentValue;
Expand All @@ -52,7 +55,7 @@ IVideoApi videoApi
/// <returns></returns>
public VideoDetail GetVideoDetail(string aid)
{
var re = _videoApi.GetVideoDetail(aid)
var re = _videoWithoutCookieApi.GetVideoDetail(aid)
.GetAwaiter().GetResult();
return re.Data;
}
Expand All @@ -63,7 +66,7 @@ public VideoDetail GetVideoDetail(string aid)
/// <returns></returns>
public RankingInfo GetRandomVideoOfRanking()
{
var apiResponse = _videoApi.GetRegionRankingVideosV2().GetAwaiter().GetResult();
var apiResponse = _videoWithoutCookieApi.GetRegionRankingVideosV2().GetAwaiter().GetResult();
_logger.LogDebug("获取排行榜成功");
RankingInfo data = apiResponse.Data.List[new Random().Next(apiResponse.Data.List.Count)];
return data;
Expand All @@ -72,7 +75,7 @@ public RankingInfo GetRandomVideoOfRanking()
public UpVideoInfo GetRandomVideoOfUp(long upId, int total)
{
int pageNum = new Random().Next(1, total + 1);
BiliApiResponse<SearchUpVideosResponse> re = _videoApi.SearchVideosByUpId(upId, 1, pageNum).GetAwaiter().GetResult();
BiliApiResponse<SearchUpVideosResponse> re = _videoWithoutCookieApi.SearchVideosByUpId(upId, 1, pageNum).GetAwaiter().GetResult();

if (re.Code != 0)
{
Expand All @@ -89,7 +92,8 @@ public UpVideoInfo GetRandomVideoOfUp(long upId, int total)
/// <returns></returns>
public int GetVideoCountOfUp(long upId)
{
BiliApiResponse<SearchUpVideosResponse> re = _videoApi.SearchVideosByUpId(upId).GetAwaiter().GetResult();
BiliApiResponse<SearchUpVideosResponse> re = _videoWithoutCookieApi.SearchVideosByUpId(upId)
.GetAwaiter().GetResult();
if (re.Code != 0)
{
throw new Exception(re.Message);
Expand Down
2 changes: 1 addition & 1 deletion test/DailyTaskTest/GetVideo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void GetVideoInfo()
{
using (var scope = Global.ServiceProviderRoot.CreateScope())
{
var service = scope.ServiceProvider.GetRequiredService<IVideoApi>();
var service = scope.ServiceProvider.GetRequiredService<IVideoWithoutCookieApi>();

//var re = service.GetVideoDetail("246364184").Result;//×ÔÖÆ
var re = service.GetVideoDetail("373987080").Result;//תÔØ
Expand Down

0 comments on commit 31fe7a6

Please sign in to comment.