优化
This commit is contained in:
@@ -25,13 +25,15 @@ namespace dy.net.Controllers
|
|||||||
private readonly DouyinCommonService commonService;
|
private readonly DouyinCommonService commonService;
|
||||||
private readonly DouyinQuartzJobService quartzJobService;
|
private readonly DouyinQuartzJobService quartzJobService;
|
||||||
private readonly DouyinFollowService douyinFollowService;
|
private readonly DouyinFollowService douyinFollowService;
|
||||||
|
private readonly DouyinCookieService douyinCookieService;
|
||||||
|
|
||||||
public ConfigController(DouyinCookieService dyCookieService, DouyinCommonService commonService, DouyinQuartzJobService quartzJobService, DouyinFollowService douyinFollowService)
|
public ConfigController(DouyinCookieService dyCookieService, DouyinCommonService commonService, DouyinQuartzJobService quartzJobService, DouyinFollowService douyinFollowService, DouyinCookieService douyinCookieService)
|
||||||
{
|
{
|
||||||
this.dyCookieService = dyCookieService;
|
this.dyCookieService = dyCookieService;
|
||||||
this.commonService = commonService;
|
this.commonService = commonService;
|
||||||
this.quartzJobService = quartzJobService;
|
this.quartzJobService = quartzJobService;
|
||||||
this.douyinFollowService = douyinFollowService;
|
this.douyinFollowService = douyinFollowService;
|
||||||
|
this.douyinCookieService = douyinCookieService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -43,12 +45,13 @@ namespace dy.net.Controllers
|
|||||||
public async Task<IActionResult> ExportConf()
|
public async Task<IActionResult> ExportConf()
|
||||||
{
|
{
|
||||||
|
|
||||||
// 1. 组装导出数据
|
// 1. 组装导出数据
|
||||||
var dto = new AppConfigImportDto()
|
var dto = new AppConfigImportDto()
|
||||||
{
|
{
|
||||||
follows = await douyinFollowService.GetHandFollows(),
|
follows = await douyinFollowService.GetHandFollows(),
|
||||||
conf = commonService.GetConfig()
|
conf = commonService.GetConfig(),
|
||||||
};
|
cookies = await douyinCookieService.GetAllAsync()
|
||||||
|
};
|
||||||
|
|
||||||
return Ok(new { code = 0, data = dto });
|
return Ok(new { code = 0, data = dto });
|
||||||
|
|
||||||
@@ -79,8 +82,20 @@ namespace dy.net.Controllers
|
|||||||
{
|
{
|
||||||
var update = await commonService.UpdateConfig(conf);
|
var update = await commonService.UpdateConfig(conf);
|
||||||
if (update)
|
if (update)
|
||||||
Serilog.Log.Debug("配置导入成功");
|
Serilog.Log.Debug("系统配置导入成功");
|
||||||
}
|
}
|
||||||
|
var cookies = dto.cookies;
|
||||||
|
|
||||||
|
if (cookies != null && cookies.Count > 0)
|
||||||
|
{
|
||||||
|
var importCookies=await douyinCookieService.ImportCookies(cookies);
|
||||||
|
if (importCookies)
|
||||||
|
{
|
||||||
|
Serilog.Log.Debug("抖音Cookie配置导入成功");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return Ok(new {code=0,data=true});
|
return Ok(new {code=0,data=true});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
||||||
<History>True|2025-12-11T14:07:16.6229994Z||;True|2025-12-11T22:05:56.7363206+08:00||;True|2025-12-11T22:01:07.5862406+08:00||;True|2025-12-11T22:00:43.5796594+08:00||;True|2025-12-08T21:20:37.8369271+08:00||;False|2025-12-08T21:20:21.1646252+08:00||;True|2025-12-08T20:51:50.6845619+08:00||;True|2025-12-08T16:43:45.2425324+08:00||;False|2025-12-08T16:42:23.0308163+08:00||;True|2025-12-08T16:41:52.4103868+08:00||;True|2025-12-08T16:41:49.8972006+08:00||;False|2025-12-08T16:41:39.5343442+08:00||;True|2025-12-08T12:40:19.2430740+08:00||;True|2025-12-08T12:02:30.6005542+08:00||;True|2025-12-08T11:34:29.6673185+08:00||;False|2025-12-08T11:30:56.2857042+08:00||;True|2025-12-08T10:52:43.7427594+08:00||;True|2025-12-08T07:05:03.2845531+08:00||;True|2025-12-07T23:02:10.0037815+08:00||;True|2025-12-07T22:48:25.7859648+08:00||;True|2025-12-07T20:49:13.6683281+08:00||;True|2025-12-07T08:47:30.1236366+08:00||;True|2025-12-06T13:14:32.4410202+08:00||;True|2025-12-06T13:07:29.7182102+08:00||;True|2025-12-06T13:05:46.2855366+08:00||;False|2025-12-06T13:05:40.3550904+08:00||;True|2025-12-06T13:03:47.8773880+08:00||;True|2025-12-06T13:03:28.9521030+08:00||;True|2025-12-05T23:11:51.5026151+08:00||;True|2025-12-05T12:46:26.1415079+08:00||;False|2025-12-05T12:46:19.1274332+08:00||;True|2025-12-05T09:04:36.7111717+08:00||;True|2025-12-05T08:22:51.7343317+08:00||;True|2025-12-05T08:20:32.0383739+08:00||;True|2025-12-04T21:58:29.4112766+08:00||;True|2025-12-04T21:58:10.0382218+08:00||;True|2025-12-04T21:57:55.3894059+08:00||;True|2025-12-04T21:10:38.8943797+08:00||;True|2025-12-04T21:09:31.5024569+08:00||;True|2025-12-04T08:22:47.9617427+08:00||;False|2025-12-04T08:22:41.3759733+08:00||;True|2025-12-04T08:14:02.2478893+08:00||;True|2025-12-04T07:57:00.2208139+08:00||;True|2025-12-03T23:58:13.3693303+08:00||;True|2025-12-03T23:57:40.4257893+08:00||;True|2025-12-03T23:56:38.8717769+08:00||;True|2025-12-03T23:56:24.0663568+08:00||;False|2025-12-03T23:55:36.1902974+08:00||;True|2025-12-03T23:51:30.6688504+08:00||;True|2025-12-03T23:34:17.1648971+08:00||;False|2025-12-03T23:34:07.7649161+08:00||;True|2025-12-03T22:32:56.2435003+08:00||;True|2025-12-03T22:27:45.6059666+08:00||;True|2025-12-03T15:55:28.0186597+08:00||;False|2025-12-03T15:54:17.5032724+08:00||;True|2025-12-03T15:53:10.2273509+08:00||;True|2025-12-02T22:11:37.4645042+08:00||;False|2025-12-02T22:10:47.1320259+08:00||;True|2025-12-02T14:39:58.8932130+08:00||;True|2025-12-02T14:36:37.1529072+08:00||;True|2025-12-02T12:58:22.0951548+08:00||;True|2025-12-02T09:30:33.7066474+08:00||;True|2025-12-02T09:30:14.5481844+08:00||;True|2025-12-02T09:30:00.3123364+08:00||;False|2025-12-02T09:29:54.4615520+08:00||;True|2025-12-02T09:13:01.7995414+08:00||;False|2025-12-02T09:12:55.8360281+08:00||;True|2025-12-02T09:12:31.0156791+08:00||;True|2025-12-02T08:55:11.3773395+08:00||;True|2025-12-02T08:53:21.3927713+08:00||;False|2025-12-02T08:48:55.8638037+08:00||;True|2025-12-02T07:29:25.2192447+08:00||;False|2025-12-02T07:29:10.2504665+08:00||;True|2025-12-02T07:28:29.0769286+08:00||;True|2025-12-01T21:53:07.6474834+08:00||;True|2025-12-01T21:44:28.1674315+08:00||;True|2025-12-01T21:18:47.2119609+08:00||;True|2025-12-01T20:51:19.9948301+08:00||;True|2025-12-01T20:50:36.9904697+08:00||;True|2025-12-01T20:44:10.1695142+08:00||;True|2025-12-01T19:27:58.0479456+08:00||;True|2025-12-01T19:16:02.2288214+08:00||;False|2025-12-01T19:15:56.0372115+08:00||;True|2025-12-01T19:15:16.4854821+08:00||;False|2025-12-01T19:15:06.7001019+08:00||;True|2025-12-01T17:10:38.9739466+08:00||;False|2025-12-01T17:10:18.8928139+08:00||;True|2025-12-01T17:03:59.3171589+08:00||;True|2025-12-01T17:03:12.5681656+08:00||;True|2025-12-01T16:42:51.4415025+08:00||;True|2025-12-01T01:29:59.6975567+08:00||;True|2025-12-01T01:29:45.1898652+08:00||;False|2025-12-01T01:29:33.1787721+08:00||;True|2025-12-01T01:27:33.1297605+08:00||;True|2025-12-01T01:27:27.3976862+08:00||;False|2025-12-01T01:27:20.5193052+08:00||;True|2025-12-01T01:11:11.0210582+08:00||;True|2025-12-01T01:04:04.3307782+08:00||;True|2025-12-01T00:55:49.8018864+08:00||;True|2025-12-01T00:27:25.1323561+08:00||;</History>
|
<History>True|2025-12-14T11:09:59.9031104Z||;True|2025-12-13T21:21:10.0022707+08:00||;True|2025-12-11T22:07:16.6229994+08:00||;True|2025-12-11T22:05:56.7363206+08:00||;True|2025-12-11T22:01:07.5862406+08:00||;True|2025-12-11T22:00:43.5796594+08:00||;True|2025-12-08T21:20:37.8369271+08:00||;False|2025-12-08T21:20:21.1646252+08:00||;True|2025-12-08T20:51:50.6845619+08:00||;True|2025-12-08T16:43:45.2425324+08:00||;False|2025-12-08T16:42:23.0308163+08:00||;True|2025-12-08T16:41:52.4103868+08:00||;True|2025-12-08T16:41:49.8972006+08:00||;False|2025-12-08T16:41:39.5343442+08:00||;True|2025-12-08T12:40:19.2430740+08:00||;True|2025-12-08T12:02:30.6005542+08:00||;True|2025-12-08T11:34:29.6673185+08:00||;False|2025-12-08T11:30:56.2857042+08:00||;True|2025-12-08T10:52:43.7427594+08:00||;True|2025-12-08T07:05:03.2845531+08:00||;True|2025-12-07T23:02:10.0037815+08:00||;True|2025-12-07T22:48:25.7859648+08:00||;True|2025-12-07T20:49:13.6683281+08:00||;True|2025-12-07T08:47:30.1236366+08:00||;True|2025-12-06T13:14:32.4410202+08:00||;True|2025-12-06T13:07:29.7182102+08:00||;True|2025-12-06T13:05:46.2855366+08:00||;False|2025-12-06T13:05:40.3550904+08:00||;True|2025-12-06T13:03:47.8773880+08:00||;True|2025-12-06T13:03:28.9521030+08:00||;True|2025-12-05T23:11:51.5026151+08:00||;True|2025-12-05T12:46:26.1415079+08:00||;False|2025-12-05T12:46:19.1274332+08:00||;True|2025-12-05T09:04:36.7111717+08:00||;True|2025-12-05T08:22:51.7343317+08:00||;True|2025-12-05T08:20:32.0383739+08:00||;True|2025-12-04T21:58:29.4112766+08:00||;True|2025-12-04T21:58:10.0382218+08:00||;True|2025-12-04T21:57:55.3894059+08:00||;True|2025-12-04T21:10:38.8943797+08:00||;True|2025-12-04T21:09:31.5024569+08:00||;True|2025-12-04T08:22:47.9617427+08:00||;False|2025-12-04T08:22:41.3759733+08:00||;True|2025-12-04T08:14:02.2478893+08:00||;True|2025-12-04T07:57:00.2208139+08:00||;True|2025-12-03T23:58:13.3693303+08:00||;True|2025-12-03T23:57:40.4257893+08:00||;True|2025-12-03T23:56:38.8717769+08:00||;True|2025-12-03T23:56:24.0663568+08:00||;False|2025-12-03T23:55:36.1902974+08:00||;True|2025-12-03T23:51:30.6688504+08:00||;True|2025-12-03T23:34:17.1648971+08:00||;False|2025-12-03T23:34:07.7649161+08:00||;True|2025-12-03T22:32:56.2435003+08:00||;True|2025-12-03T22:27:45.6059666+08:00||;True|2025-12-03T15:55:28.0186597+08:00||;False|2025-12-03T15:54:17.5032724+08:00||;True|2025-12-03T15:53:10.2273509+08:00||;True|2025-12-02T22:11:37.4645042+08:00||;False|2025-12-02T22:10:47.1320259+08:00||;True|2025-12-02T14:39:58.8932130+08:00||;True|2025-12-02T14:36:37.1529072+08:00||;True|2025-12-02T12:58:22.0951548+08:00||;True|2025-12-02T09:30:33.7066474+08:00||;True|2025-12-02T09:30:14.5481844+08:00||;True|2025-12-02T09:30:00.3123364+08:00||;False|2025-12-02T09:29:54.4615520+08:00||;True|2025-12-02T09:13:01.7995414+08:00||;False|2025-12-02T09:12:55.8360281+08:00||;True|2025-12-02T09:12:31.0156791+08:00||;True|2025-12-02T08:55:11.3773395+08:00||;True|2025-12-02T08:53:21.3927713+08:00||;False|2025-12-02T08:48:55.8638037+08:00||;True|2025-12-02T07:29:25.2192447+08:00||;False|2025-12-02T07:29:10.2504665+08:00||;True|2025-12-02T07:28:29.0769286+08:00||;True|2025-12-01T21:53:07.6474834+08:00||;True|2025-12-01T21:44:28.1674315+08:00||;True|2025-12-01T21:18:47.2119609+08:00||;True|2025-12-01T20:51:19.9948301+08:00||;True|2025-12-01T20:50:36.9904697+08:00||;True|2025-12-01T20:44:10.1695142+08:00||;True|2025-12-01T19:27:58.0479456+08:00||;True|2025-12-01T19:16:02.2288214+08:00||;False|2025-12-01T19:15:56.0372115+08:00||;True|2025-12-01T19:15:16.4854821+08:00||;False|2025-12-01T19:15:06.7001019+08:00||;True|2025-12-01T17:10:38.9739466+08:00||;False|2025-12-01T17:10:18.8928139+08:00||;True|2025-12-01T17:03:59.3171589+08:00||;True|2025-12-01T17:03:12.5681656+08:00||;True|2025-12-01T16:42:51.4415025+08:00||;True|2025-12-01T01:29:59.6975567+08:00||;True|2025-12-01T01:29:45.1898652+08:00||;False|2025-12-01T01:29:33.1787721+08:00||;True|2025-12-01T01:27:33.1297605+08:00||;True|2025-12-01T01:27:27.3976862+08:00||;False|2025-12-01T01:27:20.5193052+08:00||;True|2025-12-01T01:11:11.0210582+08:00||;True|2025-12-01T01:04:04.3307782+08:00||;</History>
|
||||||
<LastFailureDetails />
|
<LastFailureDetails />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -97,8 +97,8 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取,
|
|||||||
|
|
||||||
| 镜像标签 | 架构 |
|
| 镜像标签 | 架构 |
|
||||||
| ----------------- | -------------- |
|
| ----------------- | -------------- |
|
||||||
| `beta_1.8.6` | x86_64 (amd64) |
|
| `beta_1.8.8` | x86_64 (amd64) |
|
||||||
| `arm_1.8.6` | ARM64 |
|
| `arm_1.8.8` | ARM64 |
|
||||||
|
|
||||||
### 最新镜像查看
|
### 最新镜像查看
|
||||||
[镜像列表](http://nas.synology2023.online:10108/api/docker/dysync/1)
|
[镜像列表](http://nas.synology2023.online:10108/api/docker/dysync/1)
|
||||||
@@ -116,7 +116,7 @@ docker run -d --restart=always \
|
|||||||
-v /opt/dysync/uper:/app/uper \
|
-v /opt/dysync/uper:/app/uper \
|
||||||
-p 10103:10101 \
|
-p 10103:10101 \
|
||||||
--name dysync2025 \
|
--name dysync2025 \
|
||||||
ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.8.6
|
ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.8.8
|
||||||
# 注意:-p 后面的容器端口,可以用环境变量类似:ASPNETCORE_URLS = http://+:10108 指定
|
# 注意:-p 后面的容器端口,可以用环境变量类似:ASPNETCORE_URLS = http://+:10108 指定
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ version: '3.8'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
dysync:
|
dysync:
|
||||||
image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.8.6
|
image: ccr.ccs.tencentyun.com/jianzhichu/dysync:beta_1.8.8
|
||||||
container_name: dysync2025 # 容器名称
|
container_name: dysync2025 # 容器名称
|
||||||
restart: unless-stopped # 始终重启容器,除非容器被手动停止或Docker服务停止
|
restart: unless-stopped # 始终重启容器,除非容器被手动停止或Docker服务停止
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"dbconn": "",
|
"dbconn": "",
|
||||||
//"tagName": "arm_1.8.6",
|
//"tagName": "arm_1.8.8",
|
||||||
//"tagName": "dev_1.8.6",
|
//"tagName": "dev_1.8.8",
|
||||||
"tagName": "beta_1.8.6",
|
"tagName": "beta_1.8.8",
|
||||||
"dbtype": "Sqlite"
|
"dbtype": "Sqlite"
|
||||||
}
|
}
|
||||||
@@ -8,5 +8,7 @@ namespace dy.net.dto
|
|||||||
public List<DouyinFollowed> follows { get; set; }
|
public List<DouyinFollowed> follows { get; set; }
|
||||||
|
|
||||||
public AppConfig conf { get; set; }
|
public AppConfig conf { get; set; }
|
||||||
|
|
||||||
|
public List<DouyinCookie> cookies { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,10 +69,16 @@ namespace dy.net.job
|
|||||||
|
|
||||||
#region 私有字段
|
#region 私有字段
|
||||||
|
|
||||||
/// <summary>
|
// 类级别静态字段:映射视频类型与同步完成状态判断逻辑(复用+易维护)
|
||||||
/// 是否下载图片并合成视频
|
private static readonly Dictionary<VideoTypeEnum, Func<DouyinCookie, bool>> _syncStatusCheckMap = new()
|
||||||
/// </summary>
|
{
|
||||||
//private bool _downImageVideo;
|
[VideoTypeEnum.dy_favorite] = cookie => cookie.FavHasSyncd == 1,
|
||||||
|
[VideoTypeEnum.dy_collects] = cookie => cookie.CollHasSyncd == 1,
|
||||||
|
[VideoTypeEnum.dy_follows] = cookie => cookie.UperSyncd == 1,
|
||||||
|
[VideoTypeEnum.ImageVideo] = cookie => cookie.UperSyncd == 1
|
||||||
|
&& cookie.CollHasSyncd == 1
|
||||||
|
&& cookie.FavHasSyncd == 1
|
||||||
|
};
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -378,20 +384,53 @@ namespace dy.net.job
|
|||||||
// 保存视频信息到数据库
|
// 保存视频信息到数据库
|
||||||
syncCount += await SaveVideos(videos);
|
syncCount += await SaveVideos(videos);
|
||||||
|
|
||||||
//当syncCount达到上限时,跳出循环
|
// 5. 检查批次上限,若满足条件则终止循环(核心优化:抽离为方法)
|
||||||
if (config.BatchCount > 0 && syncCount >= config.BatchCount)
|
if (IsSyncLimitReached(cookie, config, syncCount))
|
||||||
{
|
{
|
||||||
Log.Debug($"{VideoType}-Cookie[{cookie.UserName}]本次同步达到上限{config.BatchCount},停止同步!!!");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//随机等待
|
||||||
// 随机延迟,模拟人类操作,避免请求过快
|
|
||||||
await Task.Delay(_random.Next(5, 10) * 1000);
|
await Task.Delay(_random.Next(5, 10) * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (syncCount, cursor, hasMore);
|
return (syncCount, cursor, hasMore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查是否达到同步批次上限且满足状态条件,需要终止循环
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cookie">抖音Cookie</param>
|
||||||
|
/// <param name="config">同步配置</param>
|
||||||
|
/// <param name="syncCount">已同步数量</param>
|
||||||
|
/// <returns>是否需要终止循环</returns>
|
||||||
|
private bool IsSyncLimitReached(DouyinCookie cookie, AppConfig config, int syncCount)
|
||||||
|
{
|
||||||
|
// 基础条件:未配置批次上限 或 未达到上限 → 不终止
|
||||||
|
if (config?.BatchCount <= 0 || syncCount < config.BatchCount)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取当前视频类型对应的状态判断逻辑
|
||||||
|
if (!_syncStatusCheckMap.TryGetValue(VideoType, out var isSyncCompleted))
|
||||||
|
{
|
||||||
|
//Log.Debug($"[{VideoType}]无匹配的同步状态判断规则,不终止循环");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 状态满足则记录日志并返回「终止循环」
|
||||||
|
if (isSyncCompleted.Invoke(cookie))
|
||||||
|
{
|
||||||
|
Log.Debug($"{VideoType}-Cookie[{cookie.UserName}]本次同步达到上限{config.BatchCount},停止同步!!!");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理视频列表
|
/// 处理视频列表
|
||||||
/// 遍历视频列表,分别处理每个视频和图片集
|
/// 遍历视频列表,分别处理每个视频和图片集
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ namespace dy.net.service
|
|||||||
return _cookieRepository.GetAllCookies(whereExpression);
|
return _cookieRepository.GetAllCookies(whereExpression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<List<DouyinCookie>> GetAllAsync()
|
||||||
|
{
|
||||||
|
return _cookieRepository.GetAllAsync();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<bool> Add(DouyinCookie dyUserCookies)
|
public async Task<bool> Add(DouyinCookie dyUserCookies)
|
||||||
{
|
{
|
||||||
@@ -85,5 +89,12 @@ namespace dy.net.service
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task<bool> ImportCookies(List<DouyinCookie> cookies)
|
||||||
|
{
|
||||||
|
await _cookieRepository.DeleteAsync(x => !string.IsNullOrWhiteSpace(x.Id));
|
||||||
|
await _cookieRepository.InsertRangeAsync(cookies);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user