跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改Core/Librarys/Browser/Favicon/ChromeFaviconManager.cs+13 −4看文件
@@ -23,10 +23,19 @@ namespace Core.Librarys.Browser.Favicon
2323 public ChromeFaviconManager(BrowserType browserType = BrowserType.Chrome)
2424 {
2525 var localAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
26删除: _chromeFaviconsPath =
27删除: browserType == BrowserType.Chrome
28删除: ? Path.Combine(localAppDataDir, "Google", "Chrome", "User Data", "Default", "Favicons")
29删除: : Path.Combine(localAppDataDir, "Microsoft", "Edge", "User Data", "Default", "Favicons");
26新增:
27新增: switch (browserType)
28新增: {
29新增: case BrowserType.Chrome:
30新增: _chromeFaviconsPath = Path.Combine(localAppDataDir, "Google", "Chrome", "User Data", "Default", "Favicons");
31新增: break;
32新增: case BrowserType.MSEdge:
33新增: _chromeFaviconsPath = Path.Combine(localAppDataDir, "Microsoft", "Edge", "User Data", "Default", "Favicons");
34新增: break;
35新增: case BrowserType.Vivaldi:
36新增: _chromeFaviconsPath = Path.Combine(localAppDataDir, "Vivaldi", "User Data", "Default", "Favicons");
37新增: break;
38新增: }
3039 _faviconsTempPath = $"{_chromeFaviconsPath}_tai.temp";
3140 _taiFaviconsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WebFavicons");
3241 if (!File.Exists(_chromeFaviconsPath))
修改Core/Models/Config/GeneralModel.cs+1 −1看文件
@@ -60,7 +60,7 @@ namespace Core.Models.Config
6060 /// <summary>
6161 /// 是否启用网站记录功能
6262 /// </summary>
63删除: [Config(Name = "网站浏览统计", Description = "统计浏览器的网站访问数据,支持:Google Chrome、MSEdge", Group = "功能", IsBeta = true)]
63新增: [Config(Name = "网站浏览统计", Description = "统计浏览器的网站访问数据,支持:Google Chrome、MSEdge、Vivaldi", Group = "功能", IsBeta = true)]
6464 public bool IsWebEnabled { get; set; } = false;
6565 }
6666}
文件末尾没有换行
修改Core/Servicers/Instances/BrowserObserver.cs+28 −22看文件
@@ -127,7 +127,7 @@ namespace Core.Servicers.Instances
127127 {
128128 case BrowserType.Chrome:
129129 _browserWatcher = new ChromeBrowserWatch();
130删除: break;
130新增: break;
131131 case BrowserType.Vivaldi:
132132 _browserWatcher = new VivaldiBrowserWatch();
133133 break;
@@ -223,33 +223,38 @@ namespace Core.Servicers.Instances
223223 {
224224 return;
225225 }
226删除: try
226新增:
227新增: if (_savedIconUrls.Contains(site.Url))
227228 {
228删除: if (_savedIconUrls.Contains(site.Url))
229删除: {
230删除: // 已经缓存的链接不再重复获取
231删除: return;
232删除: }
229新增: // 已经缓存的链接不再重复获取
230新增: return;
231新增: }
233232
234删除: if (_savedIconUrls.Count > 100)
235删除: {
236删除: // 限制缓存链接条数
237删除: _savedIconUrls.RemoveAt(0);
238删除: }
233新增: if (_savedIconUrls.Count > 100)
234新增: {
235新增: // 限制缓存链接条数
236新增: _savedIconUrls.RemoveAt(0);
237新增: }
239238
240删除: Task.Run(async () =>
239新增: Task.Run(async () =>
240新增: {
241新增: try
241242 {
242243 // 获取favicon
243244 IFaviconManager fm = null;
244245 switch (browserType)
245246 {
247新增: // chrome内核的用同一个图标管理器
246248 case BrowserType.Chrome:
247删除: fm = new ChromeFaviconManager();
248删除: break;
249249 case BrowserType.MSEdge:
250删除: fm = new ChromeFaviconManager(BrowserType.MSEdge);
250新增: case BrowserType.Vivaldi:
251新增: fm = new ChromeFaviconManager(browserType);
251252 break;
252253 }
254新增: if (fm == null)
255新增: {
256新增: throw new Exception("FaviconManager is null!");
257新增: }
253258
254259 var data = await fm.GetIconDataAsync(site.Url);
255260 if (data == null)
@@ -280,13 +285,14 @@ namespace Core.Servicers.Instances
280285 _webData.UpdateUrlFavicon(site, webSite.IconFile);
281286 }
282287 }
283删除: });
288新增: }
289新增: catch (Exception ex)
290新增: {
291新增: Logger.Error(ex.ToString());
292新增: }
293新增: });
294新增:
284295
285删除: }
286删除: catch (Exception ex)
287删除: {
288删除: Logger.Error(ex.ToString());
289删除: }
290296 }
291297 #endregion
292298
修改Core/Servicers/Instances/VivaldiBrowserWatch.cs+1 −2看文件
@@ -186,7 +186,6 @@ namespace Core.Servicers.Instances
186186 {
187187 var condtionEdit = automation.CreatePropertyCondition(30003, 50004);
188188 var condtionName = automation.CreatePropertyCondition(30011, "urlFieldInput");
189删除: var condtion = automation.CreateAndCondition(condtionEdit, condtionAccessKey);
190189 var addressElement = rootElement.FindFirst(TreeScope.TreeScope_Subtree, condtionName);
191190 if (addressElement != null)
192191 {
@@ -209,7 +208,7 @@ namespace Core.Servicers.Instances
209208 {
210209 this.url = url;
211210 this.title = title;
212删除: OnSiteChanged?.Invoke(BrowserType.Chrome, new Models.WebPage.Site()
211新增: OnSiteChanged?.Invoke(BrowserType.Vivaldi, new Models.WebPage.Site()
213212 {
214213 Url = url,
215214 Title = title