Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
Bili.Uwp
提交
38f83f7a
B
Bili.Uwp
项目概览
jobily
/
Bili.Uwp
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Bili.Uwp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
38f83f7a
编写于
9月 17, 2021
作者:
R
Richasy
提交者:
GitHub
9月 17, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加日志记录模块 (#54)
* 添加日志模块 * 调整 issue 模板
上级
be46b615
变更
31
隐藏空白更改
内联
并排
Showing
31 changed file
with
516 addition
and
122 deletion
+516
-122
.github/ISSUE_TEMPLATE/bug.md
.github/ISSUE_TEMPLATE/bug.md
+7
-1
.github/ISSUE_TEMPLATE/doc.md
.github/ISSUE_TEMPLATE/doc.md
+25
-0
.github/ISSUE_TEMPLATE/feature.md
.github/ISSUE_TEMPLATE/feature.md
+1
-1
README.md
README.md
+5
-1
assets/image/guide/screenshot.png
assets/image/guide/screenshot.png
+0
-0
src/App/App.csproj
src/App/App.csproj
+3
-0
src/App/App.xaml.cs
src/App/App.xaml.cs
+3
-1
src/App/Controls/Settings/LoggerSettingSection.xaml
src/App/Controls/Settings/LoggerSettingSection.xaml
+2
-2
src/App/Controls/Settings/LoggerSettingSection.xaml.cs
src/App/Controls/Settings/LoggerSettingSection.xaml.cs
+29
-2
src/App/Resources/Strings/zh-CN/Resources.resw
src/App/Resources/Strings/zh-CN/Resources.resw
+6
-0
src/Controller/Controller.Uwp/BiliController.Account.cs
src/Controller/Controller.Uwp/BiliController.Account.cs
+106
-32
src/Controller/Controller.Uwp/BiliController.Auth.cs
src/Controller/Controller.Uwp/BiliController.Auth.cs
+1
-0
src/Controller/Controller.Uwp/BiliController.Community.cs
src/Controller/Controller.Uwp/BiliController.Community.cs
+10
-5
src/Controller/Controller.Uwp/BiliController.Live.cs
src/Controller/Controller.Uwp/BiliController.Live.cs
+12
-15
src/Controller/Controller.Uwp/BiliController.Partition.cs
src/Controller/Controller.Uwp/BiliController.Partition.cs
+16
-7
src/Controller/Controller.Uwp/BiliController.Pgc.cs
src/Controller/Controller.Uwp/BiliController.Pgc.cs
+56
-22
src/Controller/Controller.Uwp/BiliController.Player.cs
src/Controller/Controller.Uwp/BiliController.Player.cs
+3
-3
src/Controller/Controller.Uwp/BiliController.Popular.cs
src/Controller/Controller.Uwp/BiliController.Popular.cs
+3
-1
src/Controller/Controller.Uwp/BiliController.Rank.cs
src/Controller/Controller.Uwp/BiliController.Rank.cs
+10
-2
src/Controller/Controller.Uwp/BiliController.Recommend.cs
src/Controller/Controller.Uwp/BiliController.Recommend.cs
+3
-1
src/Controller/Controller.Uwp/BiliController.Search.cs
src/Controller/Controller.Uwp/BiliController.Search.cs
+21
-7
src/Controller/Controller.Uwp/BiliController.SpecialColumn.cs
...Controller/Controller.Uwp/BiliController.SpecialColumn.cs
+27
-9
src/Controller/Controller.Uwp/BiliController.cs
src/Controller/Controller.Uwp/BiliController.cs
+10
-4
src/Controller/Controller.Uwp/Controller.Uwp.csproj
src/Controller/Controller.Uwp/Controller.Uwp.csproj
+13
-0
src/Controller/Controller.Uwp/Interfaces/ILoggerModule.cs
src/Controller/Controller.Uwp/Interfaces/ILoggerModule.cs
+31
-0
src/Controller/Controller.Uwp/Interfaces/INetworkModule.cs
src/Controller/Controller.Uwp/Interfaces/INetworkModule.cs
+4
-4
src/Controller/Controller.Uwp/Modules/LoggerModule.cs
src/Controller/Controller.Uwp/Modules/LoggerModule.cs
+104
-0
src/Lib/Lib.Uwp/AccountProvider/AccountProvider.cs
src/Lib/Lib.Uwp/AccountProvider/AccountProvider.cs
+0
-1
src/Models/Models.App/Constants/ControllerConstants.cs
src/Models/Models.App/Constants/ControllerConstants.cs
+2
-0
src/Models/Models.App/Other/ServiceException.cs
src/Models/Models.App/Other/ServiceException.cs
+1
-1
src/Models/Models.Enums/App/LanguageNames.cs
src/Models/Models.Enums/App/LanguageNames.cs
+2
-0
未找到文件。
.github/ISSUE_TEMPLATE/bug
---
.md
→
.github/ISSUE_TEMPLATE/bug.md
浏览文件 @
38f83f7a
---
name
:
Bug 报告
about
:
提交 Bug 以帮助我们提高应用体验
title
:
'
'
title
:
'
[Bug]
'
labels
:
bug, 待分配
assignees
:
Richasy
...
...
@@ -69,6 +69,12 @@ Visual Studio 版本:
-
[ ] 2019 (16.{版本号})
-
[ ] 2022 (17.{版本号})
## 日志记录
<!-- 应用会记录一些网络请求错误和运行时错误的日志,
请在应用设置中打开 日志记录 面板,打开日志文件夹,选取问题发生当日的日志记录作为 Issue 的附件上传。
上传就是将日志文件拖拽到当前的输入框内即可 -->
## 备注
<!-- 添加你认为有必要的信息 -->
.github/ISSUE_TEMPLATE/doc.md
0 → 100644
浏览文件 @
38f83f7a
---
name
:
文档
about
:
我有关于文档的建议或问题
title
:
'
[Doc]'
labels
:
文档, 待分配
assignees
:
Richasy
---
## 关联文档
<!-- 请取消下方的注释,并使用这样的方式插入与该问题有关的文档链接,如果你的问题与某个具体文档无关,请忽略 -->
<!-- - ![文档名称](文档链接)-->
## 描述
<!-- 在这里描述你对文档的建议或者问题 -->
## 预期的内容
<!-- 请描述你希望文档进行修改的内容,并说明符合预期的内容是怎样的 -->
## 备注
<!-- 添加你觉得有必要的信息 -->
\ No newline at end of file
.github/ISSUE_TEMPLATE/
----
.md
→
.github/ISSUE_TEMPLATE/
feature
.md
浏览文件 @
38f83f7a
---
name
:
功能需求
about
:
给项目提供建议或点子
title
:
'
'
title
:
'
[Feature]
'
labels
:
功能, 待分配
assignees
:
Richasy
...
...
README.md
浏览文件 @
38f83f7a
...
...
@@ -42,4 +42,8 @@
## 🌏 路线图
哔哩会逐步完善,请查看
[
哔哩里程碑
](
https://github.com/Richasy/Bili.Uwp/milestones
)
来了解哔哩下一步打算做的事情。于此同时,欢迎各位开发者加入,让我们一起打造哔哩的未来。
\ No newline at end of file
哔哩会逐步完善,请查看
[
哔哩里程碑
](
https://github.com/Richasy/Bili.Uwp/milestones
)
来了解哔哩下一步打算做的事情。于此同时,欢迎各位开发者加入,让我们一起打造哔哩的未来。
## 🧩 截图
![
截图
](
./assets/image/guide/screenshot.png
)
\ No newline at end of file
assets/image/guide/screenshot.png
0 → 100644
浏览文件 @
38f83f7a
1.3 MB
src/App/App.csproj
浏览文件 @
38f83f7a
...
...
@@ -16,6 +16,9 @@
<Use64BitCompiler>
true
</Use64BitCompiler>
<ShortcutGenericAnalysis>
true
</ShortcutGenericAnalysis>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)' == 'Debug|x64'"
>
<TreatWarningsAsErrors>
false
</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Compile
Include=
"$(SolutionDir)\src\Shared\SharedAssemblyInfo.cs"
>
<Link>
Properties\SharedAssemblyInfo.cs
</Link>
...
...
src/App/App.xaml.cs
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
Richasy.Bili.Controller.Uwp.Interfaces
;
using
Richasy.Bili.Locator.Uwp
;
using
Richasy.Bili.Models.App.Constants
;
using
Richasy.Bili.Toolkit.Interfaces
;
...
...
@@ -153,7 +154,8 @@ namespace Richasy.Bili.App
{
e
.
Handled
=
true
;
// TODO: Handle e.Exception
var
logger
=
ServiceLocator
.
Instance
.
GetService
<
ILoggerModule
>();
logger
.
LogError
(
e
.
Exception
);
}
}
}
src/App/Controls/Settings/LoggerSettingSection.xaml
浏览文件 @
38f83f7a
...
...
@@ -37,7 +37,7 @@
<Button
x:Name="OpenLoggerFolderButton"
MinWidth="120"
Click="OnOpenLoggerFolderButtonClick"
Click="OnOpenLoggerFolderButtonClick
Async
"
Content="{loc:LocaleLocator Name=OpenFolder}" />
</uwp:ExpanderExWrapper.WrapContent>
</uwp:ExpanderExWrapper>
...
...
@@ -53,7 +53,7 @@
<Button
x:Name="CleanLoggerButton"
MinWidth="120"
Click="OnCleanLoggerButtonClick"
Click="OnCleanLoggerButtonClick
Async
"
Content="{loc:LocaleLocator Name=Clean}" />
</uwp:ExpanderExWrapper.WrapContent>
</uwp:ExpanderExWrapper>
...
...
src/App/Controls/Settings/LoggerSettingSection.xaml.cs
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
Richasy.Bili.Controller.Uwp.Interfaces
;
using
Richasy.Bili.Locator.Uwp
;
using
Richasy.Bili.Models.App.Constants
;
using
Richasy.Bili.Models.Enums.App
;
using
Richasy.Bili.Toolkit.Interfaces
;
using
Richasy.Bili.ViewModels.Uwp
;
using
Windows.Storage
;
using
Windows.System
;
namespace
Richasy.Bili.App.Controls
{
/// <summary>
...
...
@@ -15,12 +25,29 @@ namespace Richasy.Bili.App.Controls
this
.
InitializeComponent
();
}
private
void
OnOpenLoggerFolderButtonClick
(
object
sender
,
Windows
.
UI
.
Xaml
.
RoutedEventArgs
e
)
private
async
void
OnOpenLoggerFolderButtonClickAsync
(
object
sender
,
Windows
.
UI
.
Xaml
.
RoutedEventArgs
e
)
{
var
folder
=
await
ApplicationData
.
Current
.
LocalFolder
.
CreateFolderAsync
(
ControllerConstants
.
Names
.
LoggerFolder
,
CreationCollisionOption
.
OpenIfExists
).
AsTask
();
await
Launcher
.
LaunchFolderAsync
(
folder
);
}
private
void
OnCleanLoggerButtonClick
(
object
sender
,
Windows
.
UI
.
Xaml
.
RoutedEventArgs
e
)
private
async
void
OnCleanLoggerButtonClickAsync
(
object
sender
,
Windows
.
UI
.
Xaml
.
RoutedEventArgs
e
)
{
var
folder
=
await
ApplicationData
.
Current
.
LocalFolder
.
CreateFolderAsync
(
ControllerConstants
.
Names
.
LoggerFolder
,
CreationCollisionOption
.
OpenIfExists
).
AsTask
();
var
resourceToolkit
=
ServiceLocator
.
Instance
.
GetService
<
IResourceToolkit
>();
try
{
var
logger
=
ServiceLocator
.
Instance
.
GetService
<
ILoggerModule
>();
await
folder
.
DeleteAsync
(
StorageDeleteOption
.
PermanentDelete
).
AsTask
();
await
ApplicationData
.
Current
.
LocalFolder
.
CreateFolderAsync
(
ControllerConstants
.
Names
.
LoggerFolder
,
CreationCollisionOption
.
OpenIfExists
).
AsTask
();
}
catch
(
Exception
)
{
}
finally
{
AppViewModel
.
Instance
.
ShowTip
(
resourceToolkit
.
GetLocaleString
(
Models
.
Enums
.
LanguageNames
.
LogEmptied
),
InfoType
.
Success
);
}
}
}
}
src/App/Resources/Strings/zh-CN/Resources.resw
浏览文件 @
38f83f7a
...
...
@@ -340,6 +340,9 @@
<data
name=
"FailedToClearHisotry"
xml:space=
"preserve"
>
<value>
尝试清空历史记录失败,请稍后重试
</value>
</data>
<data
name=
"FailedToClearLog"
xml:space=
"preserve"
>
<value>
清除日志失败,请稍后重试
</value>
</data>
<data
name=
"FailedToClearViewLater"
xml:space=
"preserve"
>
<value>
清除稍后再看列表失败,请稍后重试
</value>
</data>
...
...
@@ -500,6 +503,9 @@
<data
name=
"Location"
xml:space=
"preserve"
>
<value>
位置
</value>
</data>
<data
name=
"LogEmptied"
xml:space=
"preserve"
>
<value>
已清除日志记录
</value>
</data>
<data
name=
"LoggerFolder"
xml:space=
"preserve"
>
<value>
日志文件夹
</value>
</data>
...
...
src/Controller/Controller.Uwp/BiliController.Account.cs
浏览文件 @
38f83f7a
...
...
@@ -44,10 +44,12 @@ namespace Richasy.Bili.Controller.Uwp
{
var
profile
=
await
_accountProvider
.
GetMyInformationAsync
();
this
.
MyInfo
=
profile
;
_loggerModule
.
LogError
(
new
Exception
(
"测试一下"
));
_loggerModule
.
LogError
(
new
Exception
(
"测试一下2"
),
true
);
}
catch
(
Exception
ex
)
{
Debug
.
WriteLine
(
ex
.
Message
);
_loggerModule
.
LogError
(
ex
);
}
}
}
...
...
@@ -59,8 +61,17 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
<
Mine
>
GetMyDataAsync
()
{
ThrowWhenNetworkUnavaliable
();
var
data
=
await
_accountProvider
.
GetMyDataAsync
();
return
data
;
try
{
var
data
=
await
_accountProvider
.
GetMyDataAsync
();
return
data
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
throw
;
}
}
/// <summary>
...
...
@@ -91,8 +102,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
HistoryVideoIterationEventArgs
(
data
);
HistoryVideoIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
cursor
.
Max
>
0
);
if
(
cursor
.
Max
==
0
)
{
throw
;
...
...
@@ -112,8 +124,9 @@ namespace Richasy.Bili.Controller.Uwp
{
return
await
_accountProvider
.
RemoveHistoryItemAsync
(
"archive"
,
historyId
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -129,8 +142,9 @@ namespace Richasy.Bili.Controller.Uwp
{
return
await
_accountProvider
.
ClearHistoryAsync
(
"archive"
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -143,14 +157,23 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
<
UserSpaceInformation
>
RequestUserSpaceInformationAsync
(
int
userId
)
{
ThrowWhenNetworkUnavaliable
();
var
data
=
await
_accountProvider
.
GetUserSpaceInformationAsync
(
userId
);
if
(
data
.
VideoSet
!=
null
)
try
{
var
args
=
new
UserSpaceVideoIterationEventArgs
(
data
.
VideoSet
,
userId
);
UserSpaceVideoIteration
?.
Invoke
(
this
,
args
);
}
var
data
=
await
_accountProvider
.
GetUserSpaceInformationAsync
(
userId
);
if
(
data
.
VideoSet
!=
null
)
{
var
args
=
new
UserSpaceVideoIterationEventArgs
(
data
.
VideoSet
,
userId
);
UserSpaceVideoIteration
?.
Invoke
(
this
,
args
);
}
return
data
.
User
;
return
data
.
User
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -162,9 +185,18 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
RequestUserSpaceVideoSetAsync
(
int
userId
,
string
offsetId
)
{
ThrowWhenNetworkUnavaliable
();
var
data
=
await
_accountProvider
.
GetUserSpaceVideoSetAsync
(
userId
,
offsetId
);
var
args
=
new
UserSpaceVideoIterationEventArgs
(
data
,
userId
);
UserSpaceVideoIteration
?.
Invoke
(
this
,
args
);
try
{
var
data
=
await
_accountProvider
.
GetUserSpaceVideoSetAsync
(
userId
,
offsetId
);
var
args
=
new
UserSpaceVideoIterationEventArgs
(
data
,
userId
);
UserSpaceVideoIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -176,8 +208,17 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
<
bool
>
ModifyUserRelationAsync
(
int
userId
,
bool
isFollow
)
{
ThrowWhenNetworkUnavaliable
();
var
result
=
await
_accountProvider
.
ModifyUserRelationAsync
(
userId
,
isFollow
);
return
result
;
try
{
var
result
=
await
_accountProvider
.
ModifyUserRelationAsync
(
userId
,
isFollow
);
return
result
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -196,8 +237,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
RelatedUserIterationEventArgs
(
result
,
pageNumber
,
userId
);
FansIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
@@ -221,8 +263,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
RelatedUserIterationEventArgs
(
result
,
pageNumber
,
userId
);
FollowsIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
@@ -245,8 +288,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
ViewLaterVideoIterationEventArgs
(
result
,
pageNumber
);
ViewLaterVideoIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
@@ -267,8 +311,9 @@ namespace Richasy.Bili.Controller.Uwp
var
result
=
await
_accountProvider
.
ClearViewLaterAsync
();
return
result
;
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -287,8 +332,9 @@ namespace Richasy.Bili.Controller.Uwp
var
result
=
await
_accountProvider
.
AddVideoToViewLaterAsync
(
videoId
);
return
result
;
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -307,8 +353,9 @@ namespace Richasy.Bili.Controller.Uwp
var
result
=
await
_accountProvider
.
RemoveVideoFromViewLaterAsync
(
videoIds
);
return
result
;
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -323,8 +370,16 @@ namespace Richasy.Bili.Controller.Uwp
{
ThrowWhenNetworkUnavaliable
();
var
list
=
await
_accountProvider
.
GetFavoriteListAsync
(
userId
,
videoId
);
return
list
.
List
;
try
{
var
list
=
await
_accountProvider
.
GetFavoriteListAsync
(
userId
,
videoId
);
return
list
.
List
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -336,8 +391,16 @@ namespace Richasy.Bili.Controller.Uwp
{
ThrowWhenNetworkUnavaliable
();
var
response
=
await
_accountProvider
.
GetFavoriteVideoGalleryAsync
(
userId
);
return
response
;
try
{
var
response
=
await
_accountProvider
.
GetFavoriteVideoGalleryAsync
(
userId
);
return
response
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -350,8 +413,16 @@ namespace Richasy.Bili.Controller.Uwp
{
ThrowWhenNetworkUnavaliable
();
var
response
=
await
_accountProvider
.
GetFavoriteFolderListAsync
(
userId
,
pageNumber
);
return
response
;
try
{
var
response
=
await
_accountProvider
.
GetFavoriteFolderListAsync
(
userId
,
pageNumber
);
return
response
;
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -369,8 +440,9 @@ namespace Richasy.Bili.Controller.Uwp
var
response
=
await
_accountProvider
.
GetFavoriteVideoListAsync
(
favoriteId
,
pageNumber
);
return
response
;
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
@@ -405,8 +477,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
FavoritePgcIterationEventArgs
(
response
,
pageNumber
,
type
);
PgcFavoriteIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
@@ -429,8 +502,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
FavoriteArticleIterationEventArgs
(
response
,
pageNumber
);
ArticleFavoriteIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
<=
1
)
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.Auth.cs
浏览文件 @
38f83f7a
...
...
@@ -39,6 +39,7 @@ namespace Richasy.Bili.Controller.Uwp
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
LoggedFailed
?.
Invoke
(
this
,
ex
);
}
}
...
...
src/Controller/Controller.Uwp/BiliController.Community.cs
浏览文件 @
38f83f7a
...
...
@@ -29,8 +29,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
ReplyIterationEventArgs
(
response
,
targetId
);
ReplyIteration
?.
Invoke
(
this
,
args
);
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
cursor
.
Next
>
0
);
if
(
cursor
.
Next
==
0
)
{
throw
;
...
...
@@ -56,8 +57,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
ReplyIterationEventArgs
(
response
,
targetId
);
ReplyDetailIteration
?.
Invoke
(
this
,
args
);
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
cursor
.
Next
>
0
);
if
(
cursor
.
Next
==
0
)
{
throw
;
...
...
@@ -81,8 +83,9 @@ namespace Richasy.Bili.Controller.Uwp
{
return
await
_communityProvider
.
LikeReplyAsync
(
isLike
,
replyId
,
targetId
,
type
);
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -102,8 +105,9 @@ namespace Richasy.Bili.Controller.Uwp
{
return
await
_communityProvider
.
AddReplyAsync
(
message
,
targetId
,
type
,
rootId
,
parentId
);
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -123,8 +127,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
DynamicVideoIterationEventArgs
(
reply
);
DynamicVideoIteration
?.
Invoke
(
this
,
args
);
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
!
string
.
IsNullOrEmpty
(
offset
));
if
(
string
.
IsNullOrEmpty
(
offset
))
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.Live.cs
浏览文件 @
38f83f7a
...
...
@@ -49,8 +49,9 @@ namespace Richasy.Bili.Controller.Uwp
LiveFeedRoomIteration
?.
Invoke
(
this
,
new
LiveFeedRoomIterationEventArgs
(
data
,
pageNumber
+
1
));
}
catch
(
ServiceException
)
catch
(
ServiceException
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -63,10 +64,8 @@ namespace Richasy.Bili.Controller.Uwp
/// </summary>
/// <param name="roomId">直播间Id.</param>
/// <returns><see cref="LiveRoomDetail"/>.</returns>
public
async
Task
<
LiveRoomDetail
>
GetLiveRoomDetailAsync
(
int
roomId
)
{
return
await
_liveProvider
.
GetLiveRoomDetailAsync
(
roomId
);
}
public
Task
<
LiveRoomDetail
>
GetLiveRoomDetailAsync
(
int
roomId
)
=>
_liveProvider
.
GetLiveRoomDetailAsync
(
roomId
);
/// <summary>
/// 获取直播间播放信息.
...
...
@@ -74,11 +73,8 @@ namespace Richasy.Bili.Controller.Uwp
/// <param name="roomId">直播间Id.</param>
/// <param name="quality">清晰度.</param>
/// <returns>播放信息.</returns>
public
async
Task
<
LivePlayInformation
>
GetLivePlayInformationAsync
(
int
roomId
,
int
quality
=
4
)
{
var
result
=
await
_liveProvider
.
GetLivePlayInformationAsync
(
roomId
,
quality
);
return
result
;
}
public
Task
<
LivePlayInformation
>
GetLivePlayInformationAsync
(
int
roomId
,
int
quality
=
4
)
=>
_liveProvider
.
GetLivePlayInformationAsync
(
roomId
,
quality
);
/// <summary>
/// 连接到直播间.
...
...
@@ -180,13 +176,14 @@ namespace Richasy.Bili.Controller.Uwp
}
else
if
(
result
.
IsFaulted
)
{
_loggerModule
.
LogError
(
result
.
Exception
);
throw
result
.
Exception
;
}
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
// Log.
}
_loggerModule
.
LogError
(
ex
);
}
});
}
...
...
@@ -431,9 +428,9 @@ namespace Richasy.Bili.Controller.Uwp
// 暂不支持.
}
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
// 记录日志.
_loggerModule
.
LogError
(
ex
);
}
}
...
...
src/Controller/Controller.Uwp/BiliController.Partition.cs
浏览文件 @
38f83f7a
...
...
@@ -25,7 +25,7 @@ namespace Richasy.Bili.Controller.Uwp
{
var
cacheData
=
await
_fileToolkit
.
ReadLocalDataAsync
<
LocalCache
<
List
<
Partition
>>>(
Names
.
PartitionIndex
,
folderName
:
Names
.
ServerFolder
);
var
needRequest
=
true
;
List
<
Partition
>
data
;
List
<
Partition
>
data
=
null
;
if
(
cacheData
!=
null
)
{
needRequest
=
cacheData
.
ExpiryTime
<
DateTimeOffset
.
Now
;
...
...
@@ -34,10 +34,18 @@ namespace Richasy.Bili.Controller.Uwp
if
(
needRequest
)
{
ThrowWhenNetworkUnavaliable
();
var
webResult
=
await
_partitionProvider
.
GetPartitionIndexAsync
();
data
=
webResult
.
ToList
();
var
localCache
=
new
LocalCache
<
List
<
Partition
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
Names
.
PartitionIndex
,
localCache
,
Names
.
ServerFolder
);
try
{
var
webResult
=
await
_partitionProvider
.
GetPartitionIndexAsync
();
data
=
webResult
.
ToList
();
var
localCache
=
new
LocalCache
<
List
<
Partition
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
Names
.
PartitionIndex
,
localCache
,
Names
.
ServerFolder
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
}
}
else
{
...
...
@@ -63,9 +71,9 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestSubPartitionDataAsync
(
int
subPartitionId
,
bool
isRecommend
,
int
offsetId
=
0
,
VideoSortType
sortType
=
VideoSortType
.
Default
,
int
pageNumber
=
1
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
requestDateTime
=
DateTimeOffset
.
Now
;
var
data
=
await
_partitionProvider
.
GetSubPartitionDataAsync
(
subPartitionId
,
isRecommend
,
offsetId
,
sortType
,
pageNumber
);
pageNumber
=
!
isRecommend
&&
sortType
!=
VideoSortType
.
Default
?
pageNumber
+
1
:
1
;
...
...
@@ -90,8 +98,9 @@ namespace Richasy.Bili.Controller.Uwp
tagList
:
defaultData
.
TopTags
));
}
}
catch
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
offsetId
>
0
);
if
(
offsetId
==
0
)
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.Pgc.cs
浏览文件 @
38f83f7a
...
...
@@ -40,10 +40,18 @@ namespace Richasy.Bili.Controller.Uwp
if
(
needRequest
)
{
ThrowWhenNetworkUnavaliable
();
var
webResult
=
await
_pgcProvider
.
GetTabAsync
(
type
);
data
=
webResult
;
var
localCache
=
new
LocalCache
<
List
<
PgcTab
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
$"
{
type
}
Tab.json"
,
localCache
,
Names
.
ServerFolder
);
try
{
var
webResult
=
await
_pgcProvider
.
GetTabAsync
(
type
);
data
=
webResult
;
var
localCache
=
new
LocalCache
<
List
<
PgcTab
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
$"
{
type
}
Tab.json"
,
localCache
,
Names
.
ServerFolder
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
else
{
...
...
@@ -62,9 +70,9 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestPgcPageDetailAsync
(
int
tabId
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
response
=
await
_pgcProvider
.
GetPageDetailAsync
(
tabId
);
var
additionalArgs
=
PgcModuleAdditionalDataChangedEventArgs
.
Create
(
response
,
tabId
);
...
...
@@ -76,8 +84,9 @@ namespace Richasy.Bili.Controller.Uwp
var
iterationArgs
=
PgcModuleIterationEventArgs
.
Create
(
response
,
tabId
);
PgcModuleIteration
?.
Invoke
(
this
,
iterationArgs
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
...
...
@@ -90,9 +99,9 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestPgcPageDetailAsync
(
PgcType
type
,
string
cursor
=
null
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
response
=
await
_pgcProvider
.
GetPageDetailAsync
(
type
,
cursor
);
if
(
string
.
IsNullOrEmpty
(
cursor
))
...
...
@@ -107,8 +116,9 @@ namespace Richasy.Bili.Controller.Uwp
var
iterationArgs
=
PgcModuleIterationEventArgs
.
Create
(
response
,
type
);
PgcModuleIteration
?.
Invoke
(
this
,
iterationArgs
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
!
string
.
IsNullOrEmpty
(
cursor
));
if
(
string
.
IsNullOrEmpty
(
cursor
))
{
throw
;
...
...
@@ -124,15 +134,16 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestSubPartitionDataAsync
(
int
partitionId
,
int
offsetId
=
0
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
requestDateTime
=
DateTimeOffset
.
Now
;
var
data
=
await
_pgcProvider
.
GetPartitionRecommendVideoAsync
(
partitionId
,
offsetId
);
SubPartitionVideoIteration
?.
Invoke
(
this
,
new
PartitionVideoIterationEventArgs
(
partitionId
,
requestDateTime
,
data
,
1
));
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
offsetId
>
0
);
if
(
offsetId
==
0
)
{
throw
;
...
...
@@ -158,7 +169,15 @@ namespace Richasy.Bili.Controller.Uwp
throw
new
ArgumentException
(
"无效的参数"
);
}
return
await
_pgcProvider
.
GetDisplayInformationAsync
(
episodeId
,
seasonId
);
try
{
return
await
_pgcProvider
.
GetDisplayInformationAsync
(
episodeId
,
seasonId
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -167,9 +186,7 @@ namespace Richasy.Bili.Controller.Uwp
/// <param name="episodeId">分集Id.</param>
/// <returns>分集交互信息.</returns>
public
async
Task
<
EpisodeInteraction
>
GetPgcEpisodeInteractionAsync
(
int
episodeId
)
{
return
await
_pgcProvider
.
GetEpisodeInteractionAsync
(
episodeId
);
}
=>
await
_pgcProvider
.
GetEpisodeInteractionAsync
(
episodeId
);
/// <summary>
/// 追番/取消追番.
...
...
@@ -185,8 +202,9 @@ namespace Richasy.Bili.Controller.Uwp
var
result
=
await
_pgcProvider
.
FollowAsync
(
seasonId
,
isFollow
);
return
result
;
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
true
);
return
false
;
}
}
...
...
@@ -197,10 +215,7 @@ namespace Richasy.Bili.Controller.Uwp
/// <param name="type">PGC类型.</param>
/// <returns>索引结果.</returns>
public
async
Task
<
PgcIndexConditionResponse
>
GetPgcIndexConditionsAsync
(
PgcType
type
)
{
ThrowWhenNetworkUnavaliable
();
return
await
_pgcProvider
.
GetPgcIndexConditionsAsync
(
type
);
}
=>
await
_pgcProvider
.
GetPgcIndexConditionsAsync
(
type
);
/// <summary>
/// 请求PGC索引内容.
...
...
@@ -219,8 +234,9 @@ namespace Richasy.Bili.Controller.Uwp
var
args
=
new
PgcIndexResultIterationEventArgs
(
data
,
type
);
PgcIndexResultIteration
?.
Invoke
(
this
,
args
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
<=
1
);
if
(
pageNumber
>
1
)
{
throw
;
...
...
@@ -236,7 +252,16 @@ namespace Richasy.Bili.Controller.Uwp
public
Task
<
PgcTimeLineResponse
>
GetPgcTimeLineAsync
(
PgcType
type
)
{
ThrowWhenNetworkUnavaliable
();
return
_pgcProvider
.
GetPgcTimeLineAsync
(
type
);
try
{
return
_pgcProvider
.
GetPgcTimeLineAsync
(
type
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -247,7 +272,16 @@ namespace Richasy.Bili.Controller.Uwp
public
Task
<
PgcPlayListResponse
>
GetPgcPlayListAsync
(
int
listId
)
{
ThrowWhenNetworkUnavaliable
();
return
_pgcProvider
.
GetPgcPlayListAsync
(
listId
);
try
{
return
_pgcProvider
.
GetPgcPlayListAsync
(
listId
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
}
}
src/Controller/Controller.Uwp/BiliController.Player.cs
浏览文件 @
38f83f7a
...
...
@@ -118,11 +118,11 @@ namespace Richasy.Bili.Controller.Uwp
isSuccess
=
await
_playerProvider
.
ReportProgressAsync
(
videoId
,
partId
,
Convert
.
ToInt64
(
progress
.
TotalSeconds
));
}
// Record.
_loggerModule
.
LogInformation
(
"播放历史记录"
+
(
isSuccess
?
"成功"
:
"失败"
));
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
// Record.
_loggerModule
.
LogError
(
ex
);
}
}
}
...
...
src/Controller/Controller.Uwp/BiliController.Popular.cs
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
System.Linq
;
using
System.Threading.Tasks
;
...
...
@@ -28,8 +29,9 @@ namespace Richasy.Bili.Controller.Uwp
.
ToList
();
PopularVideoIteration
?.
Invoke
(
this
,
new
Models
.
App
.
Args
.
PopularVideoIterationEventArgs
(
cards
));
}
catch
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
offsetIndex
>
0
);
if
(
offsetIndex
==
0
)
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.Rank.cs
浏览文件 @
38f83f7a
...
...
@@ -19,8 +19,16 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
<
List
<
Item
>>
GetRankAsync
(
int
partitionId
)
{
ThrowWhenNetworkUnavaliable
();
var
rank
=
await
_rankProvider
.
GetRankDetailAsync
(
partitionId
);
return
rank
;
try
{
return
await
_rankProvider
.
GetRankDetailAsync
(
partitionId
);
}
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
}
}
src/Controller/Controller.Uwp/BiliController.Recommend.cs
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
static
Richasy
.
Bili
.
Models
.
App
.
Constants
.
ServiceConstants
;
...
...
@@ -26,8 +27,9 @@ namespace Richasy.Bili.Controller.Uwp
RecommendVideoIteration
?.
Invoke
(
this
,
new
Models
.
App
.
Args
.
RecommendVideoIterationEventArgs
(
result
));
}
catch
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
offsetIndex
>
0
);
if
(
offsetIndex
==
0
)
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.Search.cs
浏览文件 @
38f83f7a
...
...
@@ -21,7 +21,15 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns>热搜列表.</returns>
public
async
Task
<
List
<
SearchRecommendItem
>>
GetHotSearchListAsync
()
{
return
await
_searchProvider
.
GetHotSearchListAsync
();
try
{
return
await
_searchProvider
.
GetHotSearchListAsync
();
}
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
/// <summary>
...
...
@@ -50,8 +58,9 @@ namespace Richasy.Bili.Controller.Uwp
VideoSearchIteration
?.
Invoke
(
this
,
new
VideoSearchIterationEventArgs
(
videoData
,
pageNumber
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -66,8 +75,9 @@ namespace Richasy.Bili.Controller.Uwp
var
bangumiData
=
await
_searchProvider
.
GetBangumiSearchResultAsync
(
keyword
,
TotalRank
,
pageNumber
);
BangumiSearchIteration
?.
Invoke
(
this
,
new
PgcSearchIterationEventArgs
(
bangumiData
,
pageNumber
,
keyword
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -81,8 +91,9 @@ namespace Richasy.Bili.Controller.Uwp
var
movieData
=
await
_searchProvider
.
GetMovieSearchResultAsync
(
keyword
,
TotalRank
,
pageNumber
);
MovieSearchIteration
?.
Invoke
(
this
,
new
PgcSearchIterationEventArgs
(
movieData
,
pageNumber
,
keyword
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -96,8 +107,9 @@ namespace Richasy.Bili.Controller.Uwp
var
liveData
=
await
_searchProvider
.
GetLiveSearchResultAsync
(
keyword
,
pageNumber
);
LiveSearchIteration
?.
Invoke
(
this
,
new
LiveSearchIterationEventArgs
(
liveData
,
keyword
,
pageNumber
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -114,8 +126,9 @@ namespace Richasy.Bili.Controller.Uwp
var
userData
=
await
_searchProvider
.
GetUserSearchResultAsync
(
keyword
,
u_orderType
,
u_orderSort
,
u_userType
,
pageNumber
);
UserSearchIteration
?.
Invoke
(
this
,
new
UserSearchIterationEventArgs
(
userData
,
pageNumber
,
keyword
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -131,8 +144,9 @@ namespace Richasy.Bili.Controller.Uwp
var
articleData
=
await
_searchProvider
.
GetArticleSearchResultAsync
(
keyword
,
a_orderType
,
a_partitionId
,
pageNumber
);
ArticleSearchIteration
?.
Invoke
(
this
,
new
ArticleSearchIterationEventArgs
(
articleData
,
pageNumber
,
keyword
));
}
catch
(
System
.
Exception
)
catch
(
System
.
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
src/Controller/Controller.Uwp/BiliController.SpecialColumn.cs
浏览文件 @
38f83f7a
...
...
@@ -33,9 +33,17 @@ namespace Richasy.Bili.Controller.Uwp
if
(
needRequest
)
{
ThrowWhenNetworkUnavaliable
();
data
=
await
_specialColumnProvider
.
GetCategoriesAsync
();
var
localCache
=
new
LocalCache
<
List
<
ArticleCategory
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
Names
.
DocumentaryCategories
,
localCache
,
Names
.
ServerFolder
);
try
{
data
=
await
_specialColumnProvider
.
GetCategoriesAsync
();
var
localCache
=
new
LocalCache
<
List
<
ArticleCategory
>>(
DateTimeOffset
.
Now
.
AddDays
(
1
),
data
);
await
_fileToolkit
.
WriteLocalDataAsync
(
Names
.
DocumentaryCategories
,
localCache
,
Names
.
ServerFolder
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
else
{
...
...
@@ -54,15 +62,16 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestCategoryArticlesAsync
(
int
categoryId
,
int
pageNumber
,
ArticleSortType
sortType
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
data
=
await
_specialColumnProvider
.
GetCategoryArticlesAsync
(
categoryId
,
pageNumber
,
sortType
);
var
iterationArgs
=
SpecialColumnArticleIterationEventArgs
.
Create
(
data
,
categoryId
,
pageNumber
+
1
);
SpecialColumnArticleIteration
?.
Invoke
(
this
,
iterationArgs
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -77,9 +86,9 @@ namespace Richasy.Bili.Controller.Uwp
/// <returns><see cref="Task"/>.</returns>
public
async
Task
RequestRecommendArticlesAsync
(
int
pageNumber
)
{
ThrowWhenNetworkUnavaliable
();
try
{
ThrowWhenNetworkUnavaliable
();
var
data
=
await
_specialColumnProvider
.
GetRecommendArticlesAsync
(
pageNumber
);
var
additionalArgs
=
SpecialColumnAdditionalDataChangedEventArgs
.
Create
(
data
);
if
(
additionalArgs
!=
null
&&
pageNumber
==
1
)
...
...
@@ -90,8 +99,9 @@ namespace Richasy.Bili.Controller.Uwp
var
iterationArgs
=
SpecialColumnArticleIterationEventArgs
.
Create
(
data
,
pageNumber
+
1
);
SpecialColumnArticleIteration
?.
Invoke
(
this
,
iterationArgs
);
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
,
pageNumber
>
1
);
if
(
pageNumber
==
1
)
{
throw
;
...
...
@@ -107,8 +117,16 @@ namespace Richasy.Bili.Controller.Uwp
public
async
Task
<
string
>
GetArticleContentAsync
(
int
articleId
)
{
ThrowWhenNetworkUnavaliable
();
var
content
=
await
_specialColumnProvider
.
GetArticleContentAsync
(
articleId
);
return
content
;
try
{
return
await
_specialColumnProvider
.
GetArticleContentAsync
(
articleId
);
}
catch
(
Exception
ex
)
{
_loggerModule
.
LogError
(
ex
);
throw
;
}
}
}
}
src/Controller/Controller.Uwp/BiliController.cs
浏览文件 @
38f83f7a
...
...
@@ -22,7 +22,6 @@ namespace Richasy.Bili.Controller.Uwp
/// </summary>
public
partial
class
BiliController
{
private
readonly
ISettingsToolkit
_settingsToolkit
;
private
readonly
IFileToolkit
_fileToolkit
;
private
readonly
IAuthorizeProvider
_authorizeProvider
;
...
...
@@ -39,6 +38,7 @@ namespace Richasy.Bili.Controller.Uwp
private
readonly
ICommunityProvider
_communityProvider
;
private
readonly
INetworkModule
_networkModule
;
private
readonly
ILoggerModule
_loggerModule
;
/// <summary>
/// 直播间套接字.
...
...
@@ -54,9 +54,9 @@ namespace Richasy.Bili.Controller.Uwp
internal
BiliController
()
{
RegisterToolkitServices
();
ServiceLocator
.
Instance
.
LoadService
(
out
_settingsToolkit
)
.
LoadService
(
out
_fileToolkit
)
ServiceLocator
.
Instance
.
LoadService
(
out
_fileToolkit
)
.
LoadService
(
out
_networkModule
)
.
LoadService
(
out
_loggerModule
)
.
LoadService
(
out
_authorizeProvider
)
.
LoadService
(
out
_accountProvider
)
.
LoadService
(
out
_partitionProvider
)
...
...
@@ -72,6 +72,7 @@ namespace Richasy.Bili.Controller.Uwp
InitializeLiveSocket
();
RegisterEvents
();
_loggerModule
.
LogInformation
(
"控制器加载完成"
);
}
/// <summary>
...
...
@@ -275,6 +276,7 @@ namespace Richasy.Bili.Controller.Uwp
private
void
RegisterToolkitServices
()
{
var
serviceCollection
=
new
ServiceCollection
()
.
AddLogging
()
.
AddSingleton
<
IAppToolkit
,
AppToolkit
>()
.
AddSingleton
<
IFileToolkit
,
FileToolkit
>()
.
AddSingleton
<
IResourceToolkit
,
ResourceToolkit
>()
...
...
@@ -283,6 +285,7 @@ namespace Richasy.Bili.Controller.Uwp
.
AddSingleton
<
IMD5Toolkit
,
MD5Toolkit
>()
.
AddSingleton
<
IFontToolkit
,
FontToolkit
>()
.
AddSingleton
<
INetworkModule
,
NetworkModule
>()
.
AddSingleton
<
ILoggerModule
,
LoggerModule
>()
.
AddSingleton
<
IAuthorizeProvider
,
AuthorizeProvider
>()
.
AddSingleton
<
IHttpProvider
,
HttpProvider
>()
.
AddSingleton
<
IAccountProvider
,
AccountProvider
>()
...
...
@@ -296,6 +299,7 @@ namespace Richasy.Bili.Controller.Uwp
.
AddSingleton
<
IPlayerProvider
,
PlayerProvider
>()
.
AddSingleton
<
ISearchProvider
,
SearchProvider
>()
.
AddSingleton
<
ICommunityProvider
,
CommunityProvider
>();
_
=
new
ServiceLocator
(
serviceCollection
);
}
...
...
@@ -303,7 +307,9 @@ namespace Richasy.Bili.Controller.Uwp
{
if
(!
IsNetworkAvailable
)
{
throw
new
InvalidOperationException
(
"网络连接异常"
);
var
ex
=
new
InvalidOperationException
(
"网络连接异常"
);
_loggerModule
.
LogError
(
ex
,
true
);
throw
ex
;
}
}
}
...
...
src/Controller/Controller.Uwp/Controller.Uwp.csproj
浏览文件 @
38f83f7a
...
...
@@ -8,6 +8,11 @@
<AssemblyName>
Richasy.Bili.Controller.Uwp
</AssemblyName>
<ProjectTypeGuids>
{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)' == 'Debug|x64'"
>
<TreatWarningsAsErrors>
false
</TreatWarningsAsErrors>
<SuppressXamlWarnings>
</SuppressXamlWarnings>
</PropertyGroup>
<ItemGroup>
<Compile
Include=
"BiliController.Auth.cs"
/>
<Compile
Include=
"BiliController.Community.cs"
/>
...
...
@@ -22,7 +27,9 @@
<Compile
Include=
"BiliController.Popular.cs"
/>
<Compile
Include=
"BiliController.Rank.cs"
/>
<Compile
Include=
"BiliController.Player.cs"
/>
<Compile
Include=
"Interfaces\ILoggerModule.cs"
/>
<Compile
Include=
"Interfaces\INetworkModule.cs"
/>
<Compile
Include=
"Modules\LoggerModule.cs"
/>
<Compile
Include=
"Modules\NetworkModule.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"$(SolutionDir)\src\Shared\SharedAssemblyInfo.cs"
>
...
...
@@ -32,9 +39,15 @@
<Content
Include=
"Properties\Controller.Uwp.rd.xml"
/>
</ItemGroup>
<ItemGroup>
<PackageReference
Include=
"Microsoft.Extensions.Logging"
>
<Version>
5.0.0
</Version>
</PackageReference>
<PackageReference
Include=
"Microsoft.NETCore.UniversalWindowsPlatform"
>
<Version>
6.2.12
</Version>
</PackageReference>
<PackageReference
Include=
"Serilog.Extensions.Logging.File"
>
<Version>
2.0.0
</Version>
</PackageReference>
<PackageReference
Include=
"Websocket.Client"
>
<Version>
4.3.36
</Version>
</PackageReference>
...
...
src/Controller/Controller.Uwp/Interfaces/ILoggerModule.cs
0 → 100644
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
Microsoft.Extensions.Logging
;
namespace
Richasy.Bili.Controller.Uwp.Interfaces
{
/// <summary>
/// 日志记录模块.
/// </summary>
public
interface
ILoggerModule
{
/// <summary>
/// 日志记录工厂.
/// </summary>
ILoggerFactory
LoggerFactory
{
get
;
}
/// <summary>
/// 记录信息.
/// </summary>
/// <param name="message">消息.</param>
void
LogInformation
(
string
message
);
/// <summary>
/// 记录信息.
/// </summary>
/// <param name="ex">错误.</param>
/// <param name="isWarning">是否为警告.</param>
void
LogError
(
Exception
ex
,
bool
isWarning
=
false
);
}
}
src/Controller/Controller.Uwp/Interfaces/INetworkModule.cs
浏览文件 @
38f83f7a
...
...
@@ -6,22 +6,22 @@ using Richasy.Bili.Controller.Uwp.Utilities;
namespace
Richasy.Bili.Controller.Uwp.Interfaces
{
/// <summary>
///
Definition of network module
.
///
网络连接检测模块的定义
.
/// </summary>
public
interface
INetworkModule
{
/// <summary>
///
Event raised when the network changes
.
///
当网络改变时发生
.
/// </summary>
event
EventHandler
NetworkChanged
;
/// <summary>
///
Gets instance of <see cref="Utilities.ConnectionInformation"/>
.
///
<see cref="Utilities.ConnectionInformation"/> 的实例
.
/// </summary>
ConnectionInformation
ConnectionInformation
{
get
;
}
/// <summary>
///
Gets a value indicating whether internet is available across all connections
.
///
获取网络是否可用
.
/// </summary>
bool
IsNetworkAvaliable
{
get
;
}
}
...
...
src/Controller/Controller.Uwp/Modules/LoggerModule.cs
0 → 100644
浏览文件 @
38f83f7a
// Copyright (c) Richasy. All rights reserved.
using
System
;
using
System.Globalization
;
using
System.Linq
;
using
System.Text
;
using
Microsoft.Extensions.Logging
;
using
Richasy.Bili.Controller.Uwp.Interfaces
;
using
Richasy.Bili.Models.App.Constants
;
using
Windows.ApplicationModel
;
using
Windows.Storage
;
using
Windows.System.Profile
;
using
Windows.System.UserProfile
;
namespace
Richasy.Bili.Controller.Uwp.Modules
{
/// <summary>
/// 应用日志记录模块.
/// </summary>
public
class
LoggerModule
:
ILoggerModule
{
private
PackageVersion
_appVersion
;
private
PackageVersion
_systemVersion
;
private
CultureInfo
_culture
;
private
string
_deviceFamily
;
private
string
_architecture
;
private
ILogger
_logger
;
/// <summary>
/// Initializes a new instance of the <see cref="LoggerModule"/> class.
/// </summary>
/// <param name="factory">日志构造工厂.</param>
public
LoggerModule
(
ILoggerFactory
factory
)
{
LoggerFactory
=
factory
;
Initialize
();
}
/// <inheritdoc/>
public
ILoggerFactory
LoggerFactory
{
get
;
private
set
;
}
/// <inheritdoc/>
public
void
LogInformation
(
string
message
)
{
var
header
=
GetHeader
();
_logger
.
LogInformation
(
header
+
message
+
"\n"
);
}
/// <inheritdoc/>
public
void
LogError
(
Exception
ex
,
bool
isWarning
=
false
)
{
var
header
=
GetHeader
();
if
(
isWarning
)
{
_logger
.
LogWarning
(
header
+
ex
.
Message
+
"\n"
);
_logger
.
LogTrace
(
ex
,
"Warning 堆栈"
);
}
else
{
_logger
.
LogError
(
ex
,
header
);
}
}
private
void
Initialize
()
{
_appVersion
=
Package
.
Current
.
Id
.
Version
;
_culture
=
GlobalizationPreferences
.
Languages
.
Count
>
0
?
new
CultureInfo
(
GlobalizationPreferences
.
Languages
.
First
())
:
null
;
_deviceFamily
=
AnalyticsInfo
.
VersionInfo
.
DeviceFamily
;
var
sysVersion
=
ulong
.
Parse
(
AnalyticsInfo
.
VersionInfo
.
DeviceFamilyVersion
);
_systemVersion
=
new
PackageVersion
{
Major
=
(
ushort
)((
sysVersion
&
0xFFFF000000000000L
)
>>
48
),
Minor
=
(
ushort
)((
sysVersion
&
0x0000FFFF00000000L
)
>>
32
),
Build
=
(
ushort
)((
sysVersion
&
0x00000000FFFF0000L
)
>>
16
),
Revision
=
(
ushort
)(
sysVersion
&
0x000000000000FFFFL
),
};
_architecture
=
Package
.
Current
.
Id
.
Architecture
.
ToString
();
var
rootFolder
=
ApplicationData
.
Current
.
LocalFolder
;
var
logFolderName
=
ControllerConstants
.
Names
.
LoggerFolder
;
var
logFileName
=
ControllerConstants
.
Names
.
LoggerName
;
var
fullPath
=
$"
{
rootFolder
.
Path
}
\\
{
logFolderName
}
\\
{
logFileName
}
"
;
LoggerFactory
.
AddFile
(
fullPath
);
_logger
=
LoggerFactory
.
CreateLogger
(
"Richasy.Bili"
);
}
private
string
GetHeader
()
{
var
sysVersion
=
$"
{
_systemVersion
.
Major
}
.
{
_systemVersion
.
Minor
}
.
{
_systemVersion
.
Build
}
.
{
_systemVersion
.
Revision
}
"
;
var
appVersion
=
$"
{
_appVersion
.
Major
}
.
{
_appVersion
.
Minor
}
.
{
_appVersion
.
Build
}
.
{
_appVersion
.
Revision
}
"
;
var
builder
=
new
StringBuilder
();
builder
.
AppendLine
();
builder
.
AppendLine
(
$"系统信息:
{
sysVersion
}
|
{
_deviceFamily
}
|
{
_architecture
}
"
);
builder
.
AppendLine
(
$"应用信息:
{
appVersion
}
|
{
_culture
.
DisplayName
}
"
);
builder
.
AppendLine
(
"--------"
);
return
builder
.
ToString
();
}
}
}
src/Lib/Lib.Uwp/AccountProvider/AccountProvider.cs
浏览文件 @
38f83f7a
...
...
@@ -2,7 +2,6 @@
using
System.Collections.Generic
;
using
System.Net.Http
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Bilibili.App.Interfaces.V1
;
using
Richasy.Bili.Lib.Interfaces
;
...
...
src/Models/Models.App/Constants/ControllerConstants.cs
浏览文件 @
38f83f7a
...
...
@@ -14,6 +14,8 @@ namespace Richasy.Bili.Models.App.Constants
public
const
string
PartitionIndex
=
"partitionIndex.json"
;
public
const
string
DocumentaryCategories
=
"documentaryCategories.json"
;
public
const
string
ServerFolder
=
"Server"
;
public
const
string
LoggerFolder
=
"Logger"
;
public
const
string
LoggerName
=
"AppLog.log"
;
}
public
static
class
Search
...
...
src/Models/Models.App/Other/ServiceException.cs
浏览文件 @
38f83f7a
...
...
@@ -28,7 +28,7 @@ namespace Richasy.Bili.Models.App.Other
/// <param name="responseHeaders">The HTTP response headers from the response.</param>
/// <param name="statusCode">The HTTP status code from the response.</param>
public
ServiceException
(
ServerResponse
error
,
System
.
Net
.
Http
.
Headers
.
HttpResponseHeaders
responseHeaders
,
System
.
Net
.
HttpStatusCode
statusCode
,
Exception
innerException
=
null
)
:
base
(
error
?.
ToString
()
,
innerException
)
:
base
(
error
?.
Message
,
innerException
)
{
this
.
Error
=
error
;
this
.
ResponseHeaders
=
responseHeaders
;
...
...
src/Models/Models.Enums/App/LanguageNames.cs
浏览文件 @
38f83f7a
...
...
@@ -326,6 +326,8 @@ namespace Richasy.Bili.Models.Enums
FollowRoom
,
FailedToGetUserRelation
,
NoRoomDescription
,
LogEmptied
,
FailedToClearLog
,
#pragma warning restore SA1602 // Enumeration items should be documented
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录