add:一言API

新增名言种类
This commit is contained in:
2025-12-20 19:28:47 +08:00
parent 1683bc8418
commit e70a486362
3 changed files with 79 additions and 31 deletions
+1
View File
@@ -1215,6 +1215,7 @@
<ComboBoxItem Content="osu!玩家语录" FontFamily="Microsoft YaHei UI" />
<ComboBoxItem Content="励志立志的名言警句" FontFamily="Microsoft YaHei UI" />
<ComboBoxItem Content="高考祝福语" FontFamily="Microsoft YaHei UI" />
<ComboBoxItem Content="一言(Hitokoto API" FontFamily="Microsoft YaHei UI" />
</ComboBox>
</ui:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
@@ -702,21 +702,7 @@ namespace Ink_Canvas
BlackBoardWaterMark.Visibility = Visibility.Collapsed;
}
if (Settings.Appearance.ChickenSoupSource == 0)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.OSUPlayerYuLu.Length);
BlackBoardWaterMark.Text = ChickenSoup.OSUPlayerYuLu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 1)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.MingYanJingJu.Length);
BlackBoardWaterMark.Text = ChickenSoup.MingYanJingJu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 2)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.GaoKaoPhrases.Length);
BlackBoardWaterMark.Text = ChickenSoup.GaoKaoPhrases[randChickenSoupIndex];
}
_ = UpdateChickenSoupTextAsync();
if (Settings.Canvas.UsingWhiteboard)
{
+77 -16
View File
@@ -6,6 +6,7 @@ using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using System.Net.Http;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
@@ -297,26 +298,86 @@ namespace Ink_Canvas
}
}
private void ComboBoxChickenSoupSource_SelectionChanged(object sender, RoutedEventArgs e)
private static readonly HttpClient HitokotoHttpClient = CreateHitokotoClient();
private static HttpClient CreateHitokotoClient()
{
var client = new HttpClient
{
Timeout = TimeSpan.FromSeconds(5)
};
try
{
client.DefaultRequestHeaders.UserAgent.ParseAdd("InkCanvas-Hitokoto/1.0");
}
catch
{
}
return client;
}
private async Task UpdateChickenSoupTextAsync()
{
try
{
if (!Settings.Appearance.EnableChickenSoupInWhiteboardMode)
{
return;
}
if (Settings.Appearance.ChickenSoupSource == 0)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.OSUPlayerYuLu.Length);
BlackBoardWaterMark.Text = ChickenSoup.OSUPlayerYuLu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 1)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.MingYanJingJu.Length);
BlackBoardWaterMark.Text = ChickenSoup.MingYanJingJu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 2)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.GaoKaoPhrases.Length);
BlackBoardWaterMark.Text = ChickenSoup.GaoKaoPhrases[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 3)
{
BlackBoardWaterMark.Text = "正在获取一言...";
try
{
var response = await HitokotoHttpClient.GetAsync("https://v1.hitokoto.cn/?encode=text");
response.EnsureSuccessStatusCode();
var text = await response.Content.ReadAsStringAsync();
if (!string.IsNullOrWhiteSpace(text))
{
BlackBoardWaterMark.Text = text.Trim();
}
else
{
BlackBoardWaterMark.Text = "一言暂时没有返回内容";
}
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"Hitokoto API 请求失败: {ex.Message}", LogHelper.LogType.Warning);
BlackBoardWaterMark.Text = "一言获取失败,请稍后重试";
}
}
}
catch (Exception ex)
{
LogHelper.WriteLogToFile($"更新白板名言时出错: {ex.Message}", LogHelper.LogType.Warning);
}
}
private async void ComboBoxChickenSoupSource_SelectionChanged(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Appearance.ChickenSoupSource = ComboBoxChickenSoupSource.SelectedIndex;
SaveSettingsToFile();
if (Settings.Appearance.ChickenSoupSource == 0)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.OSUPlayerYuLu.Length);
BlackBoardWaterMark.Text = ChickenSoup.OSUPlayerYuLu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 1)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.MingYanJingJu.Length);
BlackBoardWaterMark.Text = ChickenSoup.MingYanJingJu[randChickenSoupIndex];
}
else if (Settings.Appearance.ChickenSoupSource == 2)
{
int randChickenSoupIndex = new Random().Next(ChickenSoup.GaoKaoPhrases.Length);
BlackBoardWaterMark.Text = ChickenSoup.GaoKaoPhrases[randChickenSoupIndex];
}
await UpdateChickenSoupTextAsync();
}
private void ToggleSwitchEnableViewboxBlackBoardScaleTransform_Toggled(object sender, RoutedEventArgs e)