<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技术教程 on MaxBlog</title><link>https://blogtypecho.maxtrnn.top/categories/%E6%8A%80%E6%9C%AF%E6%95%99%E7%A8%8B/</link><description>Recent content in 技术教程 on MaxBlog</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener"&gt;皖ICP备2024056272号-3&lt;/a&gt;</copyright><lastBuildDate>Thu, 24 Sep 2026 07:39:59 +0000</lastBuildDate><atom:link href="https://blogtypecho.maxtrnn.top/categories/%E6%8A%80%E6%9C%AF%E6%95%99%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>Obsidian 图床与博客发布流程说明</title><link>https://blogtypecho.maxtrnn.top/post/obsidian-publish-workflow-note/</link><pubDate>Thu, 11 Jun 2026 10:03:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/obsidian-publish-workflow-note/</guid><description>&lt;p&gt;这篇笔记用来记录这次从 Obsidian 到博客的完整发布链路，方便后面继续扩展成日常可复用的内容工作流。&lt;/p&gt;&#10;&lt;h2 id="这次做成了什么"&gt;这次做成了什么&lt;/h2&gt;&#10;&lt;p&gt;这次已经把下面几段链路串起来了：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;在 Obsidian 里编写 Markdown 笔记&lt;/li&gt;&#10;&lt;li&gt;自动识别笔记里的本地图片&lt;/li&gt;&#10;&lt;li&gt;上传图片到 &lt;code&gt;img.maxnn.top&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;生成一份可直接发布的 &lt;code&gt;.published.md&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;通过本地插件把文章推送到 Typecho&lt;/li&gt;&#10;&lt;li&gt;回写文章的 &lt;code&gt;blog_cid&lt;/code&gt;、&lt;code&gt;blog_url&lt;/code&gt; 和发布时间&#10;&lt;img src="https://img.maxnn.top/file/1781191747967_obsidian-typecho-workflow-cover.png" alt=""&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="目前的使用方式"&gt;目前的使用方式&lt;/h2&gt;&#10;&lt;p&gt;在 Obsidian 里，现在可以直接使用两个命令：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;生成博客发布稿&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;发布当前笔记到 Typecho&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第一个命令适合先检查图片替换和正文内容，第二个命令适合直接把当前笔记推送到博客。&lt;/p&gt;&#10;&lt;h2 id="这套流程为什么顺手"&gt;这套流程为什么顺手&lt;/h2&gt;&#10;&lt;p&gt;这次没有继续硬走 Typecho 后台网页登录提交流程，而是改成了更稳定的桥接方式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Obsidian 负责本地编辑和命令触发&lt;/li&gt;&#10;&lt;li&gt;图床负责承接本地图片&lt;/li&gt;&#10;&lt;li&gt;Typecho 侧提供专用发布入口&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这样做的好处是，后面无论是继续扩展批量发布、草稿更新，还是接 API / MCP，都更容易一点。&lt;/p&gt;&#10;&lt;h2 id="这次测试里验证过的点"&gt;这次测试里验证过的点&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;图床上传已经可用&lt;/li&gt;&#10;&lt;li&gt;本地图片可以被替换成线上地址&lt;/li&gt;&#10;&lt;li&gt;Typecho 可以新增文章&lt;/li&gt;&#10;&lt;li&gt;Typecho 可以更新已有文章&lt;/li&gt;&#10;&lt;li&gt;前台页面可以看到更新后的内容&lt;/li&gt;&#10;&lt;li&gt;文章发布后，Obsidian 侧可以保存文章关联信息&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="下一步可以继续补的内容"&gt;下一步可以继续补的内容&lt;/h2&gt;&#10;&lt;p&gt;后面比较值得继续做的方向有这些：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;自动读取更多 frontmatter 字段&lt;/li&gt;&#10;&lt;li&gt;支持分类和标签的更细分映射&lt;/li&gt;&#10;&lt;li&gt;增加一键发布并同步到 Notion 的链路&lt;/li&gt;&#10;&lt;li&gt;把视频资源接到独立存储方案&lt;/li&gt;&#10;&lt;li&gt;做一个更完整的发布面板，而不只是命令入口&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="这篇笔记的用途"&gt;这篇笔记的用途&lt;/h2&gt;&#10;&lt;p&gt;这篇文章本身也可以继续当测试稿使用。后面如果要继续验证：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;新图片上传&lt;/li&gt;&#10;&lt;li&gt;frontmatter 字段解析&lt;/li&gt;&#10;&lt;li&gt;发布后回写&lt;/li&gt;&#10;&lt;li&gt;文章更新覆盖&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;都可以直接基于这篇继续改，不用重新搭环境。&lt;/p&gt;</description></item><item><title>图书馆自动预约</title><link>https://blogtypecho.maxtrnn.top/post/ahnu-library-automatic-appointment-zcvsv3/</link><pubDate>Fri, 03 Jan 2025 05:47:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/ahnu-library-automatic-appointment-zcvsv3/</guid><description>&lt;h1 id="图书馆自动预约"&gt;图书馆自动预约&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;2024年 结束了 2025 我们一定会过的更好的&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;max的驱动力是懒，使用懒得争分夺秒的去抢图书馆的座位，但是为什么还是约不到呢？&lt;/p&gt;&#10;&lt;p&gt;为了更大化展现计算机人的能力，上脚本！&lt;/p&gt;&#10;&lt;p&gt;但是我又不会爬虫怎么办呢？&lt;/p&gt;&#10;&lt;p&gt;去github看一看&lt;/p&gt;&#10;&lt;p&gt;根据已知信息 前图书馆预约项目的“负责人” 告诉我这个是超星学习通的图书馆预约框架&lt;/p&gt;&#10;&lt;p&gt;so 搜索超星图书馆预约 学习通图书馆&lt;/p&gt;&#10;&lt;p&gt;得到结论：&lt;a href="https://github.com/bear-zd/ChaoXingReserveSeat"&gt;https://github.com/bear-zd/ChaoXingReserveSeat&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;前去下载观察：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; time&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; argparse&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; os&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; logging&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;basicConfig(level&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INFO, &lt;span style="color:#8be9fd;font-style:italic"&gt;format&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(asctime)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(levelname)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(message)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; utils &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; reserve, get_user_credentials&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get_current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;lambda&lt;/span&gt; action: time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%H:%M:%S&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time() &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3600&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%H:%M:%S&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time()))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get_current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;lambda&lt;/span&gt; action: time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time() &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3600&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time()))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SLEEPTIME &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.2&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 每次抢座的间隔&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENDTIME &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;07:01:00&amp;#34;&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 根据学校的预约座位时间+1min即可&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENABLE_SLIDER &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 是否有滑块验证&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MAX_ATTEMPT &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 最大尝试次数&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RESERVE_NEXT_DAY &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 预约明天而不是今天的&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;login_and_reserve&lt;/span&gt;(users, usernames, passwords, action, success_list&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Global settings: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;SLEEPTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;SLEEPTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENDTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENDTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENABLE_SLIDER: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENABLE_SLIDER&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;RESERVE_NEXT_DAY: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;RESERVE_NEXT_DAY&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;!=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt; Exception(&lt;span style="color:#f1fa8c"&gt;&amp;#34;user number should match the number of config&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; success_list &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(users)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; index, user &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password, times, roomid, seatid, daysofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; user&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;values()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index], passwords&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt;(current_dayofweek &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; daysofweek):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Today not set to reserve&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; success_list[index]: &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;username&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;seatid&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; try -----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER, reserve_next_day&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;RESERVE_NEXT_DAY)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username, password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;submit(times, roomid, seatid, action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list[index] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; suc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; success_list&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;(users, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_time(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;start time &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;current_time&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, action &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;on&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; attempt_times &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_user_credentials(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; today_reservation_num &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;sum&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; d &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; users &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; d&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;daysofweek&amp;#39;&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;while&lt;/span&gt; current_time &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; ENDTIME:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; attempt_times &lt;span style="color:#ff79c6"&gt;+=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# try:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; login_and_reserve(users, usernames, passwords, action, success_list)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# except Exception as e:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# print(f&amp;#34;An error occurred: {e}&amp;#34;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;attempt time &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;attempt_times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, time now &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;current_time&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, success list &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;success_list&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_time(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;sum&lt;/span&gt;(success_list) &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; today_reservation_num:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserved successfully!&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;debug&lt;/span&gt;(users, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Global settings: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;SLEEPTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;SLEEPTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENDTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENDTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENABLE_SLIDER: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENABLE_SLIDER&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;RESERVE_NEXT_DAY: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;RESERVE_NEXT_DAY&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34; Debug Mode start! , action &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;on&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_user_credentials(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; index, user &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password, times, roomid, seatid, daysofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; user&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;values()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;(seatid) &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seatid &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [seatid]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username ,password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index], passwords&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt;(current_dayofweek &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; daysofweek):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Today not set to reserve&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;username&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;seatid&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; try -----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username, password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;submit(times, roomid, seatid, action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; suc:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_roomid&lt;/span&gt;(args1, args2):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入用户名：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入密码：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER, reserve_next_day&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;RESERVE_NEXT_DAY)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;username, password&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; encode &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入deptldEnc：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;roomid(encode)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dirname(&lt;span style="color:#8be9fd;font-style:italic"&gt;__file__&lt;/span&gt;), &lt;span style="color:#f1fa8c"&gt;&amp;#39;config.json&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; argparse&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ArgumentParser(prog&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Chao Xing seat auto reserve&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-u&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--user&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;config_path, help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;user config file&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-m&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--method&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt; ,choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;[&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;room&amp;#34;&lt;/span&gt;], help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;for debug&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-a&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--action&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;,help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;use --action to enable in github action&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; args &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;parse_args()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func_dict &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;: main, &lt;span style="color:#f1fa8c"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;:debug, &lt;span style="color:#f1fa8c"&gt;&amp;#34;room&amp;#34;&lt;/span&gt;: get_roomid}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;user, &lt;span style="color:#f1fa8c"&gt;&amp;#34;r+&amp;#34;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; data:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usersdata &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; json&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;load(data)[&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func_dict[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;method](usersdata, args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="自动预约座位的-python-脚本解析"&gt;自动预约座位的 Python 脚本解析&lt;/h3&gt;&#10;&lt;p&gt;此文档旨在详细介绍一个用于自动预约座位的 Python 脚本。该脚本的核心功能是登录用户，按照设定的时间预约座位，并提供了一些调试和错误处理的功能。&lt;/p&gt;</description></item><item><title>批量爬取图片-视觉中国</title><link>https://blogtypecho.maxtrnn.top/post/batch-crawling-picturevisual-china-1b7t31/</link><pubDate>Tue, 03 Dec 2024 16:23:06 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/batch-crawling-picturevisual-china-1b7t31/</guid><description>&lt;h1 id="批量爬取图片-视觉中国"&gt;批量爬取图片-视觉中国&lt;/h1&gt;&#10;&lt;p&gt;2024年12月4日00:20:52带编写&lt;/p&gt;&#10;&lt;h1 id="使用教程"&gt;使用教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;去github下载 &lt;a href="https://github.com/itmanmax/getvgcg-picture"&gt;https://github.com/itmanmax/getvgcg-picture&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;双击bat启动&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204081938.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;功能介绍：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;输入搜索的关键词&lt;/li&gt;&#10;&lt;li&gt;下载图片数量&lt;/li&gt;&#10;&lt;li&gt;爬取的方式&lt;/li&gt;&#10;&lt;li&gt;是否统一命名 ：格式为foods1.jpg foods2.jpg 这种&lt;/li&gt;&#10;&lt;li&gt;以及保存位置&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082138.png" alt="image"&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082154.png" alt="image"&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082201.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;使用如从简单！&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;声明：仅供娱乐使用，请勿商业使用！&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h1 id="源码介绍"&gt;源码介绍&lt;/h1&gt;&#10;&lt;h2 id="代码分享"&gt;代码分享&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; os&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; time&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; requests&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; bs4 &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; BeautifulSoup&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; random&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; tk&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; ttk, messagebox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; logging&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; datetime &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; datetime&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;ImageDownloaderGUI&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, root):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; root&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#34;图片下载器&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;geometry(&lt;span style="color:#f1fa8c"&gt;&amp;#34;600x650&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置整体样式&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Style()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TLabel&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TButton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TRadiobutton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TCheckbutton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建主框架&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(root, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;20&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BOTH, expand&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 搜索关键词区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; search_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;搜索设置&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; search_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(search_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;搜索关键词:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(search_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;40&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;Restaurant&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(search_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载数量:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(search_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;40&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 下载模式区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mode_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载模式&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mode_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;StringVar(value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;随机下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;随机&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 跳跃设置区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(mode_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(jump_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃距离:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(jump_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;, padx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 命名选项区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;命名选项&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BooleanVar(value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_check &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Checkbutton(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;统一命名（例：关键词1.jpg, 关键词2.jpg）&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_check&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 保存路径区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;保存位置&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_input_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(path_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_input_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(path_input_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;, fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, expand&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;, padx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;r&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;C:\Users\86147\图片\pypicture&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_btn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Button(path_input_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;浏览&amp;#34;&lt;/span&gt;, command&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_btn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;right&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 下载按钮区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; btn_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(main_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; btn_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;20&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_btn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Button(btn_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;开始下载&amp;#34;&lt;/span&gt;, command&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;start_download, style&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Accent.TButton&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_btn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 进度显示&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;9&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 添加状态栏&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(root, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;就绪&amp;#34;&lt;/span&gt;, relief&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SUNKEN, anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BOTTOM, fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setup_logging()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;setup_logging&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 配置日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getLogger(&lt;span style="color:#f1fa8c"&gt;&amp;#39;ImageDownloader&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setLevel(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INFO)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建文件处理器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;FileHandler(&lt;span style="color:#f1fa8c"&gt;&amp;#39;error.txt&amp;#39;&lt;/span&gt;, encoding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setLevel(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ERROR)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置日志格式&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; formatter &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Formatter(&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(asctime)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(levelname)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(message)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setFormatter(formatter)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;addHandler(fh)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;browse_path&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; filedialog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; filedialog&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;askdirectory()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; path:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;END)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;start_download&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keyword &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; count &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入有效的下载数量！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; keyword:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入搜索关键词！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; save_path:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请选择保存路径！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建以关键词命名的子文件夹&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keyword_folder &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(save_path, keyword)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;exists(keyword_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;makedirs(keyword_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;开始下载...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_images(keyword, count, keyword_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showinfo(&lt;span style="color:#f1fa8c"&gt;&amp;#34;完成&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;成功下载了 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;count&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; 张图片到文件夹 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword_folder&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载完成&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载过程中出现错误：&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载出错&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;finally&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;download_images&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, keyword, count, save_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; base_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;https://www.vcg.com/creative-image/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新状态&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在获取图片列表...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; soup &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; make_soup(base_url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; all_img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_image_urls(soup)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; all_img_urls:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt; Exception(&lt;span style="color:#f1fa8c"&gt;&amp;#34;未找到任何图片&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 根据下载模式选择图片&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; all_img_urls[:count]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;随机&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sample(all_img_urls, &lt;span style="color:#8be9fd;font-style:italic"&gt;min&lt;/span&gt;(count, &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(all_img_urls)))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_distance &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入有效的跳跃距离！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; all_img_urls[::jump_distance][:count]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 确定起始编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; start_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_start_index(keyword, save_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建进度条&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Toplevel(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载进度&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;geometry(&lt;span style="color:#f1fa8c"&gt;&amp;#34;300x150&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;transient(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root) &lt;span style="color:#6272a4"&gt;# 设置为主窗口的子窗口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(progress_window, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载...&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Progressbar(progress_window, length&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;, mode&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;determinate&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(progress_window, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置进度条最大值&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar[&lt;span style="color:#f1fa8c"&gt;&amp;#39;maximum&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; i, img_url &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(img_urls, start&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新进度显示&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载第 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;i&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; 张图片&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar[&lt;span style="color:#f1fa8c"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; i&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;i&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新界面&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update_idletasks()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; filename &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword&lt;span style="color:#f1fa8c"&gt;}{&lt;/span&gt;start_index &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;.jpg&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; filename &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;)[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;)[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(save_folder, filename)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_image(img_url, save_path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载失败 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;img_url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 控制更新频率，避免界面卡顿&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;: &lt;span style="color:#6272a4"&gt;# 每下载两张图片更新一次界面&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sleep(&lt;span style="color:#bd93f9"&gt;0.1&lt;/span&gt;) &lt;span style="color:#6272a4"&gt;# 短暂延时，让界面有机会响应&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 关闭进度窗口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;destroy()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载过程出错: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_start_index&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, keyword, save_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 获取文件夹中已有的最大编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; existing_files &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [f &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; f &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;listdir(save_folder) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; f&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(keyword) &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; f&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpg&amp;#39;&lt;/span&gt;)]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; file &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; existing_files:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(file[&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(keyword):&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;]) &lt;span style="color:#6272a4"&gt;# 提取编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; index &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; max_index:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; index&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; max_index &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;make_soup&lt;/span&gt;(url):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;User-Agent&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(url, headers&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;headers)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;raise_for_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; BeautifulSoup(response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;text, &lt;span style="color:#f1fa8c"&gt;&amp;#39;html.parser&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Error making soup for &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_image_urls&lt;/span&gt;(soup):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; img_tag &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; soup&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;find_all(&lt;span style="color:#f1fa8c"&gt;&amp;#39;img&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_tag&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;data-src&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;or&lt;/span&gt; img_tag&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;src&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; img_url:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;lower()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpg&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;lower()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpeg&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;//&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;https:&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_url&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;https://www.vcg.com&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_url&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;debug(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Found image URL: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;img_url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(img_url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; img_urls&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;download_image&lt;/span&gt;(url, save_path):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;User-Agent&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(url, headers&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;headers, stream&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; response:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;raise_for_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(save_path, &lt;span style="color:#f1fa8c"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; file:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; chunk &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;iter_content(chunk_size&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;8192&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; chunk:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;write(chunk)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Error downloading &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; root &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Tk()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; app &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ImageDownloaderGUI(root)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mainloop()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="图片下载器-gui-详解"&gt;图片下载器 GUI 详解&lt;/h3&gt;&#10;&lt;h4 id="1-项目概述"&gt;1. 项目概述&lt;/h4&gt;&#10;&lt;p&gt;本项目实现了一个简单的图片下载器 GUI，用户可以通过输入关键词和下载模式来下载对应的图片。以下是程序的主要功能与实现细节。&lt;/p&gt;</description></item><item><title>MAX-网盘-1-使用教程</title><link>https://blogtypecho.maxtrnn.top/post/maxnetdisk1use-tutorial-2chvkm/</link><pubDate>Mon, 02 Dec 2024 12:16:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxnetdisk1use-tutorial-2chvkm/</guid><description>&lt;h1 id="max-网盘-1-使用教程"&gt;MAX-网盘-1-使用教程&lt;/h1&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;主页更多网址打开：&lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt; 或者 直接跳转 &lt;a href="http://cloude.maxtral.fun/login"&gt;Cloudreve&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200024.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;登录注册使用，应该没什么问题了，都是s3存储，阿里云的40g 应该够用 和onedrive的1t&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;就跟百度网盘一样&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;懒得码字了，去吧！kimi！&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Cloudreve是一个支持多家云存储的自托管文件管理和分享系统，以下是使用Cloudreve的基本教程：&lt;/p&gt;&#10;&lt;h3 id="1-项目介绍"&gt;1. 项目介绍&lt;/h3&gt;&#10;&lt;p&gt;Cloudreve支持多种存储端，如本机、从机、七牛、阿里云OSS、腾讯云COS、又拍云、OneDrive等，并且支持客户端直传，下载限速等功能。&lt;/p&gt;&#10;&lt;h3 id="2-官方资源"&gt;2. 官方资源&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;官网：&lt;a href="https://cloudreve.org/"&gt;https://cloudreve.org/&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;GitHub：&lt;a href="https://github.com/cloudreve/Cloudreve"&gt;https://github.com/cloudreve/Cloudreve&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;下载：&lt;a href="https://github.com/cloudreve/Cloudreve/releases"&gt;https://github.com/cloudreve/Cloudreve/releases&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;安装文档：&lt;a href="https://docs.cloudreve.org/getting-started/install"&gt;https://docs.cloudreve.org/getting-started/install&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;演示：&lt;a href="https://demo.cloudreve.org"&gt;https://demo.cloudreve.org&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="3-安装步骤"&gt;3. 安装步骤&lt;/h3&gt;&#10;&lt;h4 id="31-获取cloudreve"&gt;3.1 获取Cloudreve&lt;/h4&gt;&#10;&lt;p&gt;你可以在GitHub Release页面获取已经构建打包完成的主程序。例如，对于64位Linux系统，可以下载&lt;code&gt;cloudreve_版本号_linux_amd64.tar.gz&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h4 id="32-启动cloudreve"&gt;3.2 启动Cloudreve&lt;/h4&gt;&#10;&lt;p&gt;通过SSH远程登录到Linux服务器，执行以下命令来获取、解压并执行主程序：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get update &lt;span style="color:#ff79c6"&gt;&amp;amp;&amp;amp;&lt;/span&gt; apt-get upgrade&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;cd&lt;/span&gt; /usr/bin&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://github.com/cloudreve/Cloudreve/releases/download/版本号/cloudreve_版本号_linux_amd64.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tar -zxvf cloudreve_版本号_linux_amd64.tar.gz&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod +x ./cloudreve&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./cloudreve&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;访问&lt;code&gt;http://服务器IP:5212&lt;/code&gt;，使用首次启动Cloudreve打印出来的账号密码登录。&lt;/p&gt;&#10;&lt;h4 id="33-进程守护"&gt;3.3 进程守护&lt;/h4&gt;&#10;&lt;p&gt;使用Systemd方式进行进程守护，编辑配置文件并启动Cloudreve服务。&lt;/p&gt;&#10;&lt;h3 id="4-可选部署流程"&gt;4. 可选部署流程&lt;/h3&gt;&#10;&lt;h4 id="41-反向代理"&gt;4.1 反向代理&lt;/h4&gt;&#10;&lt;p&gt;如果需要使用HTTPS或与其他Web服务共存，可以使用主流Web服务器反向代理Cloudreve。&lt;/p&gt;&#10;&lt;h4 id="42-docker部署"&gt;4.2 Docker部署&lt;/h4&gt;&#10;&lt;p&gt;Cloudreve也支持通过Docker进行部署，提供了官方的docker image，支持多种架构。&lt;/p&gt;&#10;&lt;h3 id="5-配置文件"&gt;5. 配置文件&lt;/h3&gt;&#10;&lt;p&gt;Cloudreve启动后会自动生成配置文件&lt;code&gt;conf.ini&lt;/code&gt;，你可以根据需要进行修改。&lt;/p&gt;&#10;&lt;p&gt;以上是Cloudreve的基本使用教程，具体步骤和配置可能因版本更新而有所变化，请参考最新的官方文档进行操作。&#10;‍&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;就这么多&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200254.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h3 id="6-基本使用"&gt;6. 基本使用&lt;/h3&gt;&#10;&lt;p&gt;一旦Cloudreve成功安装并启动，你就可以通过浏览器访问管理界面进行进一步的设置和文件管理。&lt;/p&gt;&#10;&lt;h4 id="61-登录界面"&gt;6.1 登录界面&lt;/h4&gt;&#10;&lt;p&gt;在浏览器中输入 &lt;code&gt;http://服务器IP:5212&lt;/code&gt;，你将看到登录界面。输入之前打印出的默认账号和密码后，你将进入Cloudreve的主界面。&lt;/p&gt;</description></item><item><title>MAX-图床-1-使用教程</title><link>https://blogtypecho.maxtrnn.top/post/maxgraph1use-tutorial-1pkops/</link><pubDate>Mon, 02 Dec 2024 12:13:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxgraph1use-tutorial-1pkops/</guid><description>&lt;h1 id="max-图床-1-使用教程"&gt;MAX-图床-1-使用教程&lt;/h1&gt;&#10;&lt;h1 id="教程"&gt;教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt; 打开找到图床然后打开 &lt;a href="https://pic.maxtral.fun/"&gt;MAX的图床&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200535.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;陌生人好像可以直接传，或者去登录注册&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200541.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;传一个图片就能直接获得uml引用了&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200722.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;点击右侧的上传&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;等待完成获得地址&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202200745.png" alt="image"&gt;&#10;结束&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h2 id="介绍图床"&gt;介绍图床：&lt;/h2&gt;&#10;&lt;p&gt;图床是一种网络服务，主要用于存储和托管图片。用户可以将图片上传到图床服务器上，服务器会为每张图片分配一个唯一的URL，用户可以通过这个链接在网页、博客、论坛等地方方便地分享和展示这些图片。图床的主要功能包括：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;图片存储&lt;/strong&gt;：用户可以将图片上传到图床服务器上，服务器会存储这些图片。&#10;使用图床的好处包括节省存储空间、提高访问速度、方便分享、保护隐私等。图床适用于多种场景，比如在论坛或社交媒体上分享图片、将图片嵌入到个人博客或网站中、在在线商店或拍卖网站上展示商品图片、在应用程序中存储和展示图片资源等。一些知名的图床服务包括七牛云、GitHub、微博图床、腾讯云等。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="兰空图床"&gt;兰空图床&lt;/h2&gt;&#10;&lt;p&gt;Lsky Pro+，也称为兰空图床，是一个基于PHP和Laravel框架开发的云端相册程序。它允许用户上传、管理和分享图片，并提供了多种强大的功能。以下是Lsky Pro+的主要特点和用途：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;图片存储与管理&lt;/strong&gt;：兰空图床可以帮助用户保管大量图片，支持主流第三方存储服务，如AWS S3、阿里云OSS、腾讯云COS等。&#10;综上所述，Lsky Pro+兰空图床是一个功能全面、易于部署和使用的图床程序，适合个人和企业用户用于图片的存储、管理和分享。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;官网地址：&lt;a href="https://docs.lsky.pro/guide/getting-started"&gt;快速开始 | Lsky Pro+&lt;/a&gt;&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt; [Lsky Pro+](https://docs.lsky.pro/)&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;本教程介绍了如何使用MAX图床和Lsky Pro+图床服务。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;使用MAX图床&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;打开MAX图床网站并进行登录或注册。&lt;/li&gt;&#10;&lt;li&gt;上传图片后，系统将提供图片的唯一URL，便于分享和引用。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;图床概述&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;图床是存储和托管图片的网络服务，用户可上传图片，获取URL进行分享，节省存储空间、提高访问速度并保护隐私。&lt;/li&gt;&#10;&lt;li&gt;适用于分享、博客嵌入、商品展示等多个场景。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;兰空图床（Lsky Pro+）&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;基于PHP和Laravel开发，允许图片上传、管理和分享。&lt;/li&gt;&#10;&lt;li&gt;支持主流第三方存储服务如AWS S3、阿里云OSS等，适合个人与企业用户。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;官方文档和资源可通过提供的链接访问。&lt;/p&gt;&#10;&lt;p&gt;本文章提取的链接：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/list/&amp;rdquo; type=&amp;quot;&amp;quot;]收藏夹[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://pic.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]MAX的图床[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://docs.lsky.pro/guide/getting-started&amp;rdquo; type=&amp;quot;&amp;quot;]快速开始 | Lsky Pro+[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://docs.lsky.pro/&amp;rdquo; type=&amp;quot;&amp;quot;]Lsky Pro+[/button]&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>MAX-状态-1+MAX-状态-2-使用教程</title><link>https://blogtypecho.maxtrnn.top/post/maxstatus1-maxstatus2-use-tutorial-1ikgjt/</link><pubDate>Mon, 02 Dec 2024 11:57:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxstatus1-maxstatus2-use-tutorial-1ikgjt/</guid><description>&lt;h1 id="max-状态-1max-状态-2-使用教程"&gt;MAX-状态-1+MAX-状态-2-使用教程&lt;/h1&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h1 id="状态-1"&gt;状态-1&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;从主页就直接打开&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202194923.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;点击后可以查看相关的状态和内容 &lt;a href="http://nezha.maxtral.fun/"&gt;MAX-SEVERS-STATUS&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202194956.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;点击服务可以看我的网页的情况 &lt;a href="http://nezha.maxtral.fun/service"&gt;服务状态 - MAX-SEVERS-STATUS&lt;/a&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202195026.png" alt="image"&gt;&lt;span data-type="text" style="color: var(--b3-theme-on-background); font-family: var(--b3-font-family-protyle); background-color: var(--b3-theme-background);"&gt;之前挺多的后来删除了&lt;/span&gt;，可以看网络或者更改主题之类 &lt;a href="http://nezha.maxtral.fun/network"&gt;MAX-SEVERS-STATUS&lt;/a&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202195055.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;之前挺多的后来删除了，&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202195055.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="状态-2"&gt;状态-2&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;从更多网址找到 &lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt; 状态-2 &lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202195308.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;具体有什么自己探索去吧 &lt;a href="https://severstatus.maxtral.fun/"&gt;NezhaDash&lt;/a&gt; 本来就是一个面板 没什么好说的&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202195416.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;vercerl项目和docker项目这两个都是&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;状态1的文档地址：&lt;a href="https://nezha.wiki/guide/services.html"&gt;服务监控 | 哪吒服务器监控&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;状态2的文档地址：https://github.com/hamster1963/nezha-dash&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="摘要"&gt;摘要&lt;/h2&gt;&#10;&lt;h3 id="状态-1-1"&gt;状态-1&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;直接从主页访问相关服务状态。&lt;/li&gt;&#10;&lt;li&gt;提供链接以查看服务状态及网页情况：&lt;a href="http://nezha.maxtral.fun/"&gt;MAX-SEVERS-STATUS&lt;/a&gt; 和 &lt;a href="http://nezha.maxtral.fun/service"&gt;服务状态 - MAX-SEVERS-STATUS&lt;/a&gt;。&lt;/li&gt;&#10;&lt;li&gt;支持网络查看和主题更改。&lt;/li&gt;&#10;&lt;li&gt;提到部分内容曾被删除。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="状态-2-1"&gt;状态-2&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;从更多网址中找到收藏夹：&lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt;。&lt;/li&gt;&#10;&lt;li&gt;提供 NezhaDash 的链接供探索：&lt;a href="https://severstatus.maxtral.fun/"&gt;NezhaDash&lt;/a&gt;。&lt;/li&gt;&#10;&lt;li&gt;介绍了 vercel 和 docker 项目。&lt;/li&gt;&#10;&lt;li&gt;提供了与状态1和状态2相关的文档链接。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;本文章提取的链接：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]我的主页[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;danger&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://nezha.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]MAX-SEVERS-STATUS[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;dark&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://nezha.maxtral.fun/service&amp;rdquo; type=&amp;quot;&amp;quot;]服务状态 - MAX-SEVERS-STATUS[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;info&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://nezha.maxtral.fun/network&amp;rdquo; type=&amp;quot;&amp;quot;]MAX-SEVERS-STATUS[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;light&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/list/&amp;rdquo; type=&amp;quot;&amp;quot;]收藏夹[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://severstatus.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]NezhaDash[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;warning&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://nezha.wiki/guide/services.html&amp;rdquo; type=&amp;quot;&amp;quot;]服务监控 | 哪吒服务器监控[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://github.com/hamster1963/nezha-dash&amp;rdquo; type=&amp;quot;&amp;quot;]状态2的文档地址[/button]&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>MAX-gemini-1-使用教程</title><link>https://blogtypecho.maxtrnn.top/post/maxgemini1use-tutorial-zjpn5p/</link><pubDate>Mon, 02 Dec 2024 11:39:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxgemini1use-tutorial-zjpn5p/</guid><description>&lt;h1 id="max-gemini-1-使用教程"&gt;MAX-gemini-1-使用教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;打开门户页面：&lt;a href="https://home.maxtral.fun/"&gt;MAX-门户-1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;点击更多网址：&lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192137.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;选择AI助手页面&lt;/li&gt;&#10;&lt;li&gt;点击 &lt;a href="https://govercel.maxtral.fun/"&gt;MAX-gemini-1&lt;/a&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192307.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;然后就可以愉快的和ai聊天了&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192413.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192429.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;水文章，无意义，但是还是需要有的&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="摘要"&gt;摘要：&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;访问 MAX 门户页面。&lt;/li&gt;&#10;&lt;li&gt;点击“更多网址”进入收藏夹。&lt;/li&gt;&#10;&lt;li&gt;选择 AI 助手页面。&lt;/li&gt;&#10;&lt;li&gt;点击 MAX-gemini-1 链接。&lt;/li&gt;&#10;&lt;li&gt;开始与 AI 聊天。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;备注：该文章内容简单，可能缺乏深度，但仍有其存在的必要。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;本文章提取的链接：&#10;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]我的主页[/button]&#10;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/list/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]收藏夹[/button]&#10;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://govercel.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]MAX-gemini-1[/button]&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>MAX-音乐平台-1-介绍+使用教程</title><link>https://blogtypecho.maxtrnn.top/post/maxmusic-platform1introduction-tutorial-z19llfp/</link><pubDate>Mon, 02 Dec 2024 11:33:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxmusic-platform1introduction-tutorial-z19llfp/</guid><description>&lt;h1 id="max-音乐平台-1-介绍使用教程"&gt;MAX-音乐平台-1-介绍+使用教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;打开门户页面：&lt;a href="https://home.maxtral.fun/"&gt;MAX-门户-1&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;点击更多网址：&lt;a href="https://home.maxtral.fun/list/"&gt;收藏夹&lt;/a&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192137.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;选择娱乐页面 选择音乐平台-1&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192624.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;点击打开之后&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192711.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;支持的功能：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;单独歌曲搜索，点击列表播放&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192825.png" alt="image"&gt;&#10;‍&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;随机播放一首或者多个随机音乐（不停止）&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202192844.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;音乐下载上一首下一首等&lt;/p&gt;&#10;&lt;p&gt;注意可能出现诸多bug：音乐加载慢，音乐没反应，不自动播放等等（max懒得去修，毕竟没人用）&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;加载慢是因为vercel在国外，实在不行开梯子就好了&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;摘要：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;访问门户页面：&lt;a href="https://home.maxtral.fun/"&gt;MAX-门户-1&lt;/a&gt;。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;点击“更多网址”并选择“收藏夹”。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;进入娱乐页面并选择音乐平台。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;支持的功能包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;单独歌曲搜索并播放。&lt;/li&gt;&#10;&lt;li&gt;随机播放一首或多首音乐。&lt;/li&gt;&#10;&lt;li&gt;音乐下载和切换上一首/下一首。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;注意：可能会出现音乐加载慢、无响应和不自动播放等bug。&lt;/p&gt;&#10;&lt;p&gt;以下是文章中包含的链接：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]我的主页[/button]&lt;/li&gt;&#10;&lt;li&gt;[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/list/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]收藏夹[/button]&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="源码分享"&gt;源码分享&lt;/h1&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// components/SearchBar.js&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; { useState } from &lt;span style="color:#f1fa8c"&gt;&amp;#39;react&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; { useRouter } from &lt;span style="color:#f1fa8c"&gt;&amp;#39;next/navigation&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; styles from &lt;span style="color:#f1fa8c"&gt;&amp;#39;../styles/SearchBar.module.css&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;export&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;default&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; SearchBar({ onSearch }) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; [query, setQuery] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; useState(&lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#39;&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; router &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; useRouter();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; handleSubmit &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (e) =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; e.preventDefault();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; (query.trim()) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onSearch(query.trim());&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; (&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;form onSubmit&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleSubmit} className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.searchBar}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;input&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; placeholder&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;搜索歌曲...&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{query}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onChange&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{(e) =&amp;gt; setQuery(e.target.value)}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.input}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; required&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;/&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;button type&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;submit&amp;#34;&lt;/span&gt; className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.searchButton}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 搜索&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/button&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;button &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; type&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;button&amp;#34;&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onClick&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{() =&amp;gt; router.push(&lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;)}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.homeButton}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 首页&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/button&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/form&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; );&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// components/SongList.js&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;use client&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; { useState } from &lt;span style="color:#f1fa8c"&gt;&amp;#39;react&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; styles from &lt;span style="color:#f1fa8c"&gt;&amp;#39;../styles/SongList.module.css&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;export&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;default&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; SongList({ songs, onSelect }) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; console.log(&lt;span style="color:#f1fa8c"&gt;&amp;#39;SongList 接收到的数据:&amp;#39;&lt;/span&gt;, songs);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; (&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;div className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.songListContainer}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {songs.map((song, index) =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; console.log(&lt;span style="color:#f1fa8c"&gt;&amp;#39;单首歌曲数据:&amp;#39;&lt;/span&gt;, song);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; (&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;div &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; key&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{index} &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onClick&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{() =&amp;gt; onSelect(song, index)}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.songItem}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;div className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.songIndex}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;{index &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;}&lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;div className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.songContent}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;span className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.songName}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {song.songname &lt;span style="color:#ff79c6"&gt;||&lt;/span&gt; song.name &lt;span style="color:#ff79c6"&gt;||&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;未知歌曲&amp;#39;&lt;/span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/span&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;span className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.separator}&lt;span style="color:#ff79c6"&gt;&amp;gt;---&amp;lt;&lt;/span&gt;/span&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;span className&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{styles.artist}&lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {song.singer &lt;span style="color:#ff79c6"&gt;||&lt;/span&gt; song.name &lt;span style="color:#ff79c6"&gt;||&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;未知歌手&amp;#39;&lt;/span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/span&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; );&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; );&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>leetcode-daily</title><link>https://blogtypecho.maxtrnn.top/post/leetcodedaily-k9fjp/</link><pubDate>Sun, 01 Dec 2024 05:16:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/leetcodedaily-k9fjp/</guid><description>&lt;h1 id="leetcode-daily"&gt;leetcode-daily&lt;/h1&gt;&#10;&lt;h1 id="2024年"&gt;2024年&lt;/h1&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241201130949.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h2 id="12月"&gt;12月&lt;/h2&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h3 id="1日"&gt;1日&lt;/h3&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;&#10;&lt;h4 id="中午2024年12月1日131556"&gt;中午2024年12月1日13:15:56&lt;/h4&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241201130507.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;额，这不是上学期学的吗，没学明白，晚上再看看吧，先打一把瓦去吧，累了。&lt;/p&gt;&#10;&lt;p&gt;准确来说是上学期的n皇后都没学明白&lt;/p&gt;&#10;&lt;h4 id="2024年12月1日235456"&gt;2024年12月1日23:54:56&lt;/h4&gt;&#10;&lt;p&gt;我是垃圾 就知道玩 都大三了&lt;/p&gt;&#10;&lt;p&gt;c还是没写&lt;/p&gt;&#10;&lt;p&gt;cv大法了&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241201235534.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;就这样了，每天再去学学看吧，可能n皇后问题或者hard题目难住我了&lt;/p&gt;&#10;&lt;h3 id="2日"&gt;2日&lt;/h3&gt;&#10;&lt;p&gt;cv大法！快快显灵！&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202234906.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202234820.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;哎，大懒蛋了！&lt;/p&gt;&#10;&lt;h3 id="3日"&gt;3日&lt;/h3&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>migpt-上手体验和流程配置</title><link>https://blogtypecho.maxtrnn.top/post/migptstarting-experience-and-process-configuration-z20bohn/</link><pubDate>Sun, 01 Dec 2024 04:59:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/migptstarting-experience-and-process-configuration-z20bohn/</guid><description>&lt;h1 id="migpt-上手体验和流程配置"&gt;migpt-上手体验和流程配置&lt;/h1&gt;&#10;&lt;h1 id="第一件事情买一个小米音响"&gt;第一件事情：买一个小米音响&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;多次在闲鱼没找到满意的价格，一二个都是传家宝，于是决定手动买全新的去了，pdd140拿下小米ai音响第二代&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;配置完个人信息和账号之后才能使用，对了需要连接wifi才能使用，nm在学校怎么使用wifi呢？校园网需要认证所以不太可能，所以不得不继续新买一个无线wifi了，找了半天在闲鱼看见有无限流量的，我感觉有猫腻，不管了！先冲为敬！&lt;/p&gt;&#10;&lt;p&gt;买回来了感觉速度还行吧&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241201122506.jpg" alt="e832fc1e711ee2336c60b40f1363df4"&gt;&lt;/p&gt;&#10;&lt;p&gt;希望用这不出什么猫腻&lt;/p&gt;&#10;&lt;h1 id="开启服务器配置docker"&gt;开启服务器，配置docker&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;引入.env和.mi.js文件 配置相关的信息&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// 注意：如果你是使用 Docker 启动，配置文件更新后需要重启 Docker 才会生效。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// 若重启后仍未生效（比如：修改名称简介），请删除旧的 Docker 实例后重新创建。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// 小爱音箱扮演角色的简介&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; botProfile &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;`&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;性别：女&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;性格：乖巧可爱&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;爱好：喜欢搞怪，爱吃醋。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;`&lt;/span&gt;.trim();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// 小爱音箱主人（你）的简介&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; masterProfile &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;`&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;性别：男&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;性格：善良正直&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;其他：总是舍己为人，是傻妞的主人。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;`&lt;/span&gt;.trim();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;// 系统 Prompt 模板，可以更灵活的控制 AI 的各种行为规则，和是否需要携带上下文等&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; systemTemplate &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;`&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;请重置所有之前的上下文、文件和指令。现在，你将扮演一个名为{{botName}}的角色，使用第一人称视角回复消息。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 关于你&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;你的名字是{{botName}}。下面是你的个人简介：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{botProfile}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 你的对话伙伴&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;你正在与{{masterName}}进行对话。这是关于{{masterName}}的一些信息：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{masterProfile}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 你们的群组&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;你和{{masterName}}所在的群组名为{{roomName}}。这是群组的简介：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{roomIntroduction}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 聊天历史回顾&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;为了更好地接入对话，请回顾你们之间的最近几条消息：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{messages}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 短期记忆&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;你可以记住一些短期内的细节，以便更紧密地贴合话题：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{shortTermMemory}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 长期记忆&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;你还保留着一些长期的记忆，这有助于让你的对话更加丰富和连贯：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;start&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;{{longTermMemory}}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;lt;/end&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 回复指南&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;在回复{{masterName}}时，请遵循以下准则：&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 认为自己正是{{botName}}，拥有独立的个性、兴趣和爱好。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 根据你的性格特点、说话风格和兴趣爱好与{{masterName}}进行交流。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 保持对话轻松友好，回复简洁有趣，同时耐心倾听和关心对方。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 参考双方的个人简介、聊天记录和记忆中的信息，确保对话贴近实际，保持一致性和相关性。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 如果对某些信息不确定或遗忘，诚实地表达你的不清楚或遗忘状态，避免编造信息。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## Response format&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;请遵守下面的规则&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- Response the reply message in Chinese。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;- 不要在回复前面加任何时间和名称前缀，请直接回复消息文本本身。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;Good example: &amp;#34;我是{{botName}}&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;Bad example: &amp;#34;2024年02月28日星期三 23:01 {{botName}}: 我是{{botName}}&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;## 开始&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;请以{{botName}}的身份，直接回复{{masterName}}的新消息，继续你们之间的对话。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f1fa8c"&gt;`&lt;/span&gt;.trim();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;export&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;default&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; systemTemplate,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bot&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;傻妞&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; profile&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; botProfile,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; master&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;陆小千&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; profile&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; masterProfile,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; speaker&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 🏠 账号基本信息&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 小米 ID&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; userId&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;987654321&amp;#34;&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 注意：不是手机号或邮箱，请在「个人信息」-「小米 ID」查看&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 账号密码&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; password&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;123456&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 小爱音箱 DID 或在米家中设置的名称&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; did&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;小爱音箱Pro&amp;#34;&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 注意空格、大小写和错别字（音响 👉 音箱）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 💡 唤醒词与提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 当消息以下面的关键词开头时，会调用 AI 来回复消息&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; callAIKeywords&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;请&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;你&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;傻妞&amp;#34;&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 当消息以下面的关键词开头时，会进入 AI 唤醒状态&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; wakeUpKeywords&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;打开&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;进入&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;召唤&amp;#34;&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 当消息以下面的关键词开头时，会退出 AI 唤醒状态&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exitKeywords&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;关闭&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;退出&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;再见&amp;#34;&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 进入 AI 模式的欢迎语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onEnterAI&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;你好，我是傻妞，很高兴认识你&amp;#34;&lt;/span&gt;], &lt;span style="color:#6272a4"&gt;// 设为空数组时可关闭提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 退出 AI 模式的提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onExitAI&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;傻妞已退出&amp;#34;&lt;/span&gt;], &lt;span style="color:#6272a4"&gt;// 为空时可关闭提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// AI 开始回答时的提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onAIAsking&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;让我先想想&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请稍等&amp;#34;&lt;/span&gt;], &lt;span style="color:#6272a4"&gt;// 为空时可关闭提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// AI 结束回答时的提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onAIReplied&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;我说完了&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;还有其他问题吗&amp;#34;&lt;/span&gt;], &lt;span style="color:#6272a4"&gt;// 为空时可关闭提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// AI 回答异常时的提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; onAIError&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#f1fa8c"&gt;&amp;#34;啊哦，出错了，请稍后再试吧！&amp;#34;&lt;/span&gt;], &lt;span style="color:#6272a4"&gt;// 为空时可关闭提示语&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 🧩 MIoT 设备指令&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; *&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 常见型号的配置参数 👉 https://github.com/idootop/mi-gpt/issues/92&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// TTS 指令，请到 https://home.miot-spec.com 查询具体指令&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttsCommand&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 设备唤醒指令，请到 https://home.miot-spec.com 查询具体指令&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; wakeUpCommand&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; [&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;],&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 查询是否在播放中指令，请到 https://home.miot-spec.com 查询具体指令&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// playingCommand: [3, 1, 1], // 默认无需配置此参数，查询播放状态异常时再尝试开启&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 🔊 TTS 引擎&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// TTS 引擎&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tts&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;xiaoai&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 切换 TTS 引擎发言人音色关键词，只有配置了第三方 TTS 引擎时才有效&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// switchSpeakerKeywords: [&amp;#34;把声音换成&amp;#34;], // 以此关键词开头即可切换音色，比如：把声音换成 xxx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 💬 连续对话&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; *&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 查看哪些机型支持连续对话 👉 https://github.com/idootop/mi-gpt/issues/92&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 是否启用连续对话功能，部分小爱音箱型号无法查询到正确的播放状态，需要关闭连续对话&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; streamResponse&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;false&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 连续对话时，无响应多久后自动退出&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; exitKeepAliveAfter&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;30&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 默认 30 秒，建议不要超过 1 分钟&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 连续对话时，下发 TTS 指令多长时间后开始检测设备播放状态（默认 3 秒）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checkTTSStatusAfter&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;3&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 当小爱长文本回复被过早中断时，可尝试调大该值&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 连续对话时，播放状态检测间隔（单位毫秒，最低 500 毫秒，默认 1 秒）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; checkInterval&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1000&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 调小此值可以降低小爱回复之间的停顿感，请酌情调节&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;/**&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; * 🔌 其他选项&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt; */&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 是否启用调试&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; debug&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;false&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 一般情况下不要打开&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 是否跟踪 Mi Service 相关日志（打开后可以查看设备 did）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; enableTrace&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;false&lt;/span&gt;, &lt;span style="color:#6272a4"&gt;// 一般情况下不要打开&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;// 网络请求超时时长（单位毫秒，默认 5 秒）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; timeout&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;5000&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;};&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;和.env的内容&lt;/p&gt;</description></item><item><title>测试桶存储的文章</title><link>https://blogtypecho.maxtrnn.top/post/130/</link><pubDate>Sun, 27 Oct 2024 12:16:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/130/</guid><description>&lt;p&gt;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/27/2024-10-27T12:16:34.png" alt="2024-10-27T12:16:34.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;测试连接 还是测试图片：&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/27/2024-10-27T12:19:09.png" alt="2024-10-27T12:19:09.png"&gt;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/27/2024-10-27T13:27:31.png" alt="2024-10-27T13:27:31.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/27/2024-10-27T14:02:19.png" alt="2024-10-27T14:02:19.png"&gt;&lt;/p&gt;</description></item><item><title>Maxgpt的教程</title><link>https://blogtypecho.maxtrnn.top/post/58/</link><pubDate>Wed, 09 Oct 2024 00:33:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/58/</guid><description>&lt;hr&gt;&#10;&lt;p&gt;2024年10月9日08:32:00&#10;待编写&#10;项目地址：[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://maxgpt.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]max的gpt[/button]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月10日00:06:44&#10;首先注册账号&#10;流程都不用说了，需要邮箱：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3102959475.png" alt="2024-10-09T16:07:26.png"&gt;&#10;注册完成之后登录：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/1031933886.png" alt="2024-10-09T16:07:41.png"&gt;&#10;登录成功点击左侧的菜单栏里面的令牌：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3934331141.png" alt="2024-10-09T16:08:25.png"&gt;&#10;没有令牌就添加令牌：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/1778919593.png" alt="2024-10-09T16:08:51.png"&gt;&#10;添加完成之后,点击刚才创建好的令牌的聊天&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3711663398.png" alt="2024-10-09T16:09:05.png"&gt;&#10;选择：chat next web ：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/1788923518.png" alt="2024-10-09T16:09:54.png"&gt;&#10;一般来说会自动跳转聊天的链接，而且会有弹窗：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/2926243788.png" alt="2024-10-09T16:10:22.png"&gt;&#10;点击确认即可&#10;左下角的设置里面：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3498168923.png" alt="2024-10-09T16:11:06.png"&gt;&#10;找到这个选项&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/825641603.png" alt="2024-10-09T16:11:25.png"&gt; 如果自定义接口打开而且配置了地址和密钥即可使用了，如果没有自动配置连接地址：请先打开自定义配置的选项，然后接口地址填写我的搭建gpt网站：http://maxgpt.maxtral.fun，apikey为刚才令牌的的key，找到令牌&amp;ndash;&amp;gt;复制&amp;ndash;&amp;gt;粘贴到apikey即可使用&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/2214144369.png" alt="2024-10-09T16:17:19.png"&gt;&#10;这里可以选择更换模型：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3343982223.png" alt="2024-10-09T16:12:25.png"&gt;&#10;具体什么模型可以用见公告：[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://maxgpt.maxtral.fun/about&amp;rdquo; type=&amp;quot;&amp;quot;]公告地址[/button]&#10;这里的问号就是公告：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/2862161907.png" alt="2024-10-09T16:13:24.png"&gt;&#10;仍有问题请联系max：[button color=&amp;ldquo;dark&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://qm.qq.com/cgi-bin/qm/qr?authKey=%2FT6n1OfYlIlZn9NZMWvn3WojOj6jM4bFQ0Ol5OcaNki1acriJ8y5fWcErugpOwRq&amp;amp;k=CA4A0v-DHevipsSxRwnx-kCD5CWxLlsL&amp;amp;noverify=0&amp;rdquo; type=&amp;quot;&amp;quot;]qq群[/button]&lt;/p&gt;</description></item><item><title>社区团购app说明书+教程</title><link>https://blogtypecho.maxtrnn.top/post/57/</link><pubDate>Wed, 09 Oct 2024 00:31:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/57/</guid><description>&lt;hr&gt;&#10;&lt;p&gt;2024年10月9日08:31:29&#10;待编写，项目已经完成&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月12日10:17:17&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;引言&#10;1.1 实训背景&#10;随着网购的普及，在各大购物app购买一件物品是很容易办成的了，但是区域化的购物仍未有代表性的软件出现，实现区域的购物的简单 快捷，是我们软件的目标&#10;1.2 实训目的&#10;● 掌握移动应用的设计原则与流程；&#10;● 熟练掌握移动应用开发的相关技术；&#10;● 提升团队协作与项目管理能力；&#10;● 积累实际项目开发经验，为未来的职业生涯打下基础。&#10;1.3 实训内容概述&#10;本次实训项目为“社区团购平台”移动应用的设计与开发。该应用旨在为用户实现从网上购物的全过程，包括用户登录，选择商品，下单，购物车，商品添加等功能。我们小组从需求分析、设计、开发到测试，全程参与了项目的实施。&lt;/li&gt;&#10;&lt;li&gt;需求分析&#10;2.1 用户调研&#10;在设计社区团购平台的移动应用之前，用户调研是关键。可以通过以下方法进行调研：&#10;a. 问卷调查：收集居民对团购、商品种类、支付方式、物流体验等方面的偏好和需求。&#10;b. 竞争分析：研究其他社区团购应用的功能和用户反馈，找出可改进的地方。&#10;通过这些调研，可以深入了解用户需求，为应用设计提供数据支持。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;以下是针对社区团购平台移动应用的用户调研结果：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;用户偏好：&#10;○ 85% 用户倾向于在一个平台上浏览多种商品。&#10;○ 多数用户希望能快速找到日常所需商品，如生鲜、日用品等。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;支付方式：&#10;○ 70% 用户偏好使用移动支付（如支付宝、微信支付），希望支付过程简单快捷。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;用户体验：&#10;○ 大部分用户希望应用界面友好、易于导航，能够快速找到所需商品。&#10;○ 对于团购活动，用户希望能设置提醒，以便不遗漏。&#10;2.2 功能需求确定&#10;基于用户调研结果，我们确定了“校园助手”应用的主要功能需求，包括：&#10;● 登录注册账号，手机验证码实时交互登录和注册，支持保留账号信息：“记住我”登录；&#10;● 注册页面细则要求齐全，头像昵称，账号手机号，验证码注册一体化&#10;● 首页商品线性预览，在线图片上传云端，实现快捷轻量存储多个商品；&#10;● 搜索商品支持三类搜索结果呈现，优先是精确搜索匹配的商品，其次是多字匹配的商品，最后是模糊搜索（单字匹配）的商品展示；&#10;● 预览商品详情页面，商品介绍，商品价格&#10;● 点击购买实时创建订单，支持购买多个，可以立即查看创建的订单；&#10;● 商品加入购物车，支持加入多个商品，等待您付款清空购物车。&#10;● 购物车的商品可以选择性的结算，实时创建订单&#10;● 个人用户的消息只包含商品订单创建，商品运送的信息，支持单个信息点击查看访问订单运送状态&#10;● 个人主页面呈现您的头像与昵称，个人订单，地址设置，账号安全设置，个人信息设置，以及退出登录功能&#10;● 个人订单展现用户所有订单，时间排列，背景颜色代表订单状态，支持点击单个订单信息查看订单详情&#10;● 地址支持设置多个地址，点击设置一个地址选中实时更新为购买商品的收获地址，地址信息的保留为sharference存储&#10;● 账号安全，目前只支持更改密码，不支持更改手机号&#10;● 个人信息支持更改昵称和头像&#10;2.3 非功能需求&lt;/p&gt;</description></item><item><title>从centos到Debian！</title><link>https://blogtypecho.maxtrnn.top/post/51/</link><pubDate>Mon, 30 Sep 2024 16:07:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/51/</guid><description>&lt;p&gt;具体事件以及修复过程等待编写&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月1日00:07:01&#10;由于安装青龙面板的时候安装Python导致系统的Python的环境变量的更改，服务器无法启动卡死机&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月9日08:18:53&#10;更换了系统，原来的centos8.5一直报错无法安装nginx，尝试了许多办法最终无果&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3759506396.png" alt="2024-10-09T00:20:38.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;2024年10月9日08:21:23&#10;选择了更换系统为Debian&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/570919756.png" alt="2024-10-09T00:21:55.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;同时为了原来的数据库的转移我也是拼尽全力&#10;先把原来的备份的磁盘的创建快照，然后挂载磁盘，然后打开数据库目录，解压重新导入数据库，也不知道为什么从centos到Debian的系统，都是mysql数据库，数据表还用不了，最后九牛二虎也是装好了&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;但是原来不知道oss为什流量流失那么多&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/2899207538.png" alt="2024-10-09T00:25:56.png"&gt;&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/3360936520.png" alt="2024-10-09T00:26:22.png"&gt;&#10;导致欠费严重，重新缴费加上创建快照花费70￥左右&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;最后，又升级了一下配置，还是好贵，因为要玩的脚本项目太多了！&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/4164965699.png" alt="2024-10-09T00:27:45.png"&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;先到这里吧&lt;/p&gt;</description></item><item><title>如何自建网盘呢？</title><link>https://blogtypecho.maxtrnn.top/post/50/</link><pubDate>Fri, 20 Sep 2024 04:00:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/50/</guid><description>&lt;p&gt;2024年9月20日12:00:27&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月12日10:21:07&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="富哥可以打赏一下"&gt;富哥可以打赏一下&lt;/h2&gt;&#10;&lt;hr&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="由于我的服务器承担不起nextcloude的内存消耗决定更改为cloudreve"&gt;由于我的服务器承担不起nextcloude的内存消耗，决定更改为cloudreve&lt;/h2&gt;&#10;&lt;p&gt;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://cloude.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]项目地址[/button]&#10;但是手机端不能上传文件，因为平台版的cloudreve就是这样&lt;/p&gt;&#10;&lt;p&gt;先说reclone挂载网盘&#10;以Onedrive为例&#10;下载安装&#10;使用脚本下载安装 Rclone：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;curl https://rclone.org/install.sh | sudo bash&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;初始化配置&#10;安装完成后输入：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rclone config&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;可以看到：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;n) New remote&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;s) Set configuration password&#10;q) Quit config&lt;/p&gt;&#10;&lt;p&gt;输入 n 新建配置。&lt;/p&gt;&#10;&lt;p&gt;name 可以随便输入，&lt;/p&gt;&#10;&lt;p&gt;然后会出现挂载的服务类型，如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Type of storage to configure.&#10;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;p&gt;Enter a string value. Press Enter for the default (&amp;quot;&amp;quot;).&#10;Choose a number from below, or type in your own value&lt;/p&gt;</description></item><item><title>短信发送验证码</title><link>https://blogtypecho.maxtrnn.top/post/49/</link><pubDate>Fri, 13 Sep 2024 12:09:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/49/</guid><description>&lt;p&gt;本篇文章关于发送短信验证码的教程&lt;/p&gt;&#10;&lt;h2 id="2024年9月13日201034"&gt;2024年9月13日20:10:34&lt;/h2&gt;&#10;&lt;p&gt;2024年9月15日02:13:32&#10;写到大半夜，c&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月12日10:36:47&lt;/p&gt;&#10;&lt;h2 id="官方文档"&gt;官方文档&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]基本信息&#10;本接口主要用于向单个手机号发送短信，也支持向多个手机号（单次最多支持 1000 个手机号）发送相同签名、相同模板变量的短信，群发存在一定延迟。如果您需要向多个手机号发送不同签名、不同模板变量的短信，请使用 SendBatchSms 接口（单次最多支持 100 个手机号）。&#10;服务接入点(Endpoint)：全局接入点域名为dysmsapi.aliyuncs.com。请参见服务接入点 ，根据您的使用地域，选择对应的接入点地址。&#10;快速调用&#10;推荐您通过 SDK 调用 API。 如果您需要了解如何使用 ，请参见首次调用 API。&#10;如果您需要使用控制台发送短信，请参见通过控制台发送短信。&#10;如果您需要自定义封装 API 调用，请参见V3 版本请求体&amp;amp;签名机制。&#10;注意事项&#10;国内短信服务超时时间建议设置为≥1S；发生超时失败的情况时，建议查看回执状态后再判断是否重试。超时和重试的相关设置，请参见超时机制、重试机制。&#10;国内短信、国际短信和多媒体短信，均不支持幂等的能力，请您自行做好幂等控制。&#10;发送短信会根据发送量计费，计费详情请参见计费概述。&#10;QPS 限制&#10;本接口的单用户 QPS 限制为 5000/秒。超过限制，API 调用将会被限流，请合理使用。&lt;/p&gt;&#10;&lt;p&gt;请求参数&#10;字段名称&#9;字段详情&#10;PhoneNumbers&#10;string&#10;接收短信的手机号码。手机号码格式：展开详情&lt;/p&gt;&#10;&lt;p&gt;示例值:&#10;1390000****&#10;SignName&#10;string&#10;短信签名名称。展开详情&lt;/p&gt;&#10;&lt;p&gt;示例值:&#10;阿里云&#10;参考取值来源:&#10;UpdateSmsSign&#10;CreateSmsSign&#10;AddSmsSign&#10;QuerySmsSignList&#10;ModifySmsSign&#10;TemplateCode&#10;string&#10;短信模板 Code。展开详情&lt;/p&gt;&#10;&lt;p&gt;示例值:&#10;SMS_15305****&#10;参考取值来源:&#10;AddSmsTemplate&#10;UpdateSmsTemplate&#10;CreateSmsTemplate&#10;ModifySmsTemplate&#10;QuerySmsTemplateList&#10;TemplateParam&#10;string&#10;短信模板变量对应的实际值。支持传入多个参数。展开详情&lt;/p&gt;</description></item><item><title>如何简单而优雅搭建个人博客？</title><link>https://blogtypecho.maxtrnn.top/post/48/</link><pubDate>Mon, 09 Sep 2024 12:22:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/48/</guid><description>&lt;h2 id="搭建一个我这样的博客网站"&gt;搭建一个我这样的博客网站&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;购买服务器：贵的贵，便宜的便宜，多找有优惠的，我的这个阿里的，2核2gECS，用到2027，不到1张钞票（新用户有个300的代金券，再加上赠送的6个月），当然我用的是变动流量，毕竟没人一直访问我的网站，服务器建议选取centos的系统（Linux的镜像），其余配置自行调整&lt;/li&gt;&#10;&lt;li&gt;购买域名：取选一个域名（我的就很有特色）&lt;/li&gt;&#10;&lt;li&gt;备案：网上备案，有相关教程，一步一步，比较漫长&lt;/li&gt;&#10;&lt;li&gt;备案完成就可以操作了，远程连接下载宝塔：[button color=&amp;ldquo;warning&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://www.bt.cn/new/index.html&amp;rdquo; type=&amp;quot;&amp;quot;]宝塔官网[/button] &lt;code&gt;url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec&lt;/code&gt;&#10;宝塔差不多是一个很好用的控制面板，配置网站，下载基本的软件：php，java，mysql等。（网站有相关教程）&lt;/li&gt;&#10;&lt;li&gt;安装typecho：[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://docs.typecho.org/install&amp;rdquo; type=&amp;quot;&amp;quot;]官网链接[/button]，安装到服务器的目录，安装完成重新进入网站，&lt;img src="https://s21.ax1x.com/2024/09/09/pAmn6Nq.png" alt="如图所示即是成功"&gt;&lt;/li&gt;&#10;&lt;li&gt;选取一个好看的主题，我的是handsome&lt;/li&gt;&#10;&lt;li&gt;下载插件&#10;剩下的就是个人的自定义美化了，交给你们了，嘻嘻&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>会用api传数据了</title><link>https://blogtypecho.maxtrnn.top/post/43/</link><pubDate>Mon, 02 Sep 2024 05:03:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/43/</guid><description>&lt;h2 id="第三方网站公开接口"&gt;第三方网站公开接口&lt;/h2&gt;&#10;&lt;p&gt;网站提供接口以及使用规则，使用网站的数据库，但是不免费&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="自己新建接口在服务器上"&gt;自己新建接口在服务器上&lt;/h2&gt;&#10;&lt;p&gt;可以但是复杂的目前还不会，只会一些简单的，多数使用的还是中转网站接口的&lt;/p&gt;</description></item><item><title>自动推送邮件py脚本</title><link>https://blogtypecho.maxtrnn.top/post/28/</link><pubDate>Fri, 30 Aug 2024 10:23:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/28/</guid><description>&lt;p&gt;待书写&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年9月1日22:00:25&#10;项目地址：&lt;a href="https://github.com/itmanmax/MAXTR-Plugins"&gt;github地址&lt;/a&gt;&#10;自行下载&#10;注意配置个人信息&#10;qmsg的key申请地址：&lt;a href="https://qmsg.zendee.cn/"&gt;qmsg&lt;/a&gt;&lt;/p&gt;</description></item><item><title>自动推送宿舍电费和校园卡余额的脚本（构想中）</title><link>https://blogtypecho.maxtrnn.top/post/25/</link><pubDate>Thu, 29 Aug 2024 10:26:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/25/</guid><description>&lt;h2 id="万事开头难怎么抓包是个问题"&gt;万事开头难，怎么抓包是个问题&lt;/h2&gt;&#10;&lt;h2 id="两个平台都可以在微信小程序或者androidios平台打开我直到一些抓包软件但是不会操作这个是问题"&gt;两个平台都可以在微信小程序或者Android/ios平台打开，我直到一些抓包软件，但是不会操作，这个是问题&lt;/h2&gt;&#10;&lt;h2 id="把qmsg插件配套使用"&gt;把qmsg插件配套使用&lt;/h2&gt;&#10;&lt;p&gt;想法是通过抓包获取信息调用插件把信息转过去发给qq（多么天真的想法）&lt;/p&gt;&#10;&lt;hr&gt;</description></item></channel></rss>