当前位置:   article > 正文

(一)C#调用一言API并提取关键字_文心一言 api c#

文心一言 api c#

前言

由于最近在做一个项目需要上位机,因此就去学了下用C#编写上位机程序。一言网站提供了免费的一句话api,调用起来很方便。但由于本人没有系统的学习C#与网络知识,因此本文之讲述我所理解的部分,涉及到的一些方法可能比较麻烦,大家做个参考就好!

一、一言API

一言网址
一言提供了多种类型的句子,我们可以根据自己需求选取。
我们可以在请求链接后加上我们想要的参数进行获取。
例:https://v1.hitokoto.cn/?c=b
默认随机:https://v1.hitokoto.cn/
在这里插入图片描述

二、窗口基本设置

本工程示例只涉及到五个控件,分别为button、comboBox、label、textBox、webBrowser:
首先,我们添加button、textBox(设置为多行模式)、webBrowser这几个控件。
设置textBox多行模式
设置textBox多行模式
然后双击每一个控件,之后会弹出代码框作为初始化,我们在这里编写我们所需要的功能即可。
在这里插入图片描述

然后双击button按钮,我们在button1_Click里编辑按钮功能。通过这个函数,来获取目标网址的json文件。webBrowser1.Navigate("https://v1.hitokoto.cn/");
但是由于web这个控件默认是比较低的IE版本,因此会弹出下载框。这里我们需要复制以下内容到txt文件,并将它重命名为*.reg文件,双击打开后即可。

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=dword:00080000
 
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"encoding"=dword:00080000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

然后双击webBrowser控件,添加以下函数,将目标网址的html转成string格式并赋值给html。

string html = string.Empty;
html = (string)webBrowser1.DocumentText;//获取网址html文件
textBox1.Text = html;//将html内容显示在textBox中。
  • 1
  • 2
  • 3

这样就得到了我们想要的html内容:
在这里插入图片描述
但是这把所有内容都显示出来了,而我们只想要返回的语句。因此我们将返回的html进行分析。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/回头ml; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY><PRE>{"id":3908,"uuid":"79be7e3c-f61f-430a-a1f8-dbad7a861b43","hitokoto":"七岁断指,断了他的善,死前断臂,断了他的恶。","type":"d","from":"魔道祖师","from_who":null,"creator":"我養你啊_","creator_uid":2033,"reviewer":0,"commit_from":"web","created_at":"1537446128","length":22}</PRE></BODY></HTML>

  • 1
  • 2
  • 3
  • 4
  • 5

通过几次调用返回结果可以观察出,每次返回的框架基本上都是一样的,因此我们可以通过字符串分割方式进行筛选:

 string[] sarray = html.Split(',');
 string[] sa = sarray[2].Split('"');
 string[] sa1 = sarray[4].Split('"');
 textBox1.Text = sa[3] + "\r\n";
 textBox1.AppendText("\r\t\t----" + sa1[3]);
  • 1
  • 2
  • 3
  • 4
  • 5

这样就可以得到干净的语句与作者了:
在这里插入图片描述

三、添加下拉框

通过上面的测试,我们已经可以得到我们想要的效果了,但是还不可以选择我们想要的不同类型的语句。
这里我们将五个控件全部添加(button、comboBox、label、textBox、webBrowser),由于我们现在不需要webBrowser控件显示内容,因此可以将该控件最小化(将控件框缩小到最小)。
在这里插入图片描述
首先,我们在下拉框中添加每个类型的编号与含义:

           comboBox1.Items.Add("a:动漫");//初始化下拉框内容
            comboBox1.Items.Add("b:漫画");
            comboBox1.Items.Add("c:游戏");
            comboBox1.Items.Add("d:文学");
            comboBox1.Items.Add("e:原创");
            comboBox1.Items.Add("f:来自网络");
            comboBox1.Items.Add("g:其他");
            comboBox1.Items.Add("h:影视");
            comboBox1.Items.Add("i:诗词");
            comboBox1.Items.Add("j:网易云");
            comboBox1.Items.Add("k:哲学");
            comboBox1.Items.Add("l:抖机灵");
            comboBox1.Text = "随机";//默认随机
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这样再打开下拉框就可以显示选项了:
在这里插入图片描述
因为我们目标网址是以a~l进行访问的,因此我们需要将comboBox里面的内容提取出来:

string str = comboBox1.Text;//将下拉框内容添加到一个变量中
            if(str == "随机")
            {
                webBrowser1.Navigate("https://v1.hitokoto.cn/");
            }
            else
            {
                string data = str.Substring(0, 1);
                webBrowser1.Navigate("https://v1.hitokoto.cn/?c="+data);
            }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里str.Substring(0, 1)表示从第0位开始选,选择1位字符。
同时,为了在软件刚启动时就加载一个语句,我们可以在Form1_Load
中添加webBrowser1.Navigate语句。 this.Opacity = 0.75可以设置软件背景的透明度。

 this.Opacity = 0.75;
 webBrowser1.Navigate("https://v1.hitokoto.cn/");

  • 1
  • 2
  • 3

这样一个简单的小工具就完成啦!
在这里插入图片描述

项目工程地址

感兴趣的可以加入QQ群交流更多问题!群号:964950583

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/980546
推荐阅读
相关标签
  

闽ICP备14008679号