<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MaxBlog</title><link>https://blogtypecho.maxtrnn.top/</link><description>Recent content 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/index.xml" rel="self" type="application/rss+xml"/><item><title>遐想：要不要经常更新呢？有人看吗？</title><link>https://blogtypecho.maxtrnn.top/post/30207/</link><pubDate>Thu, 11 Jun 2026 15:48:01 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/30207/</guid><description>&lt;p&gt;&lt;img src="https://img.maxnn.top/file/1781192883911_20.png" alt=""&gt;&lt;/p&gt;&#10;&lt;h3 id="你说经常更新会有人看吗感觉都没什么人了才修好服务器和站点"&gt;&lt;font color="#2DC26B"&gt;你说经常更新会有人看吗？？？？感觉都没什么人了，才修好服务器和站点。&lt;/font&gt;&lt;/h3&gt;</description></item><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>论文降 ai 率的 prompt，实测维普 6%</title><link>https://blogtypecho.maxtrnn.top/post/204/</link><pubDate>Thu, 05 Feb 2026 12:58:47 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/204/</guid><description>&lt;p&gt;&lt;img src="https://img.maxnn.top/file/blog/covers/1781234338370_article-204-ai-writing-cover.webp" alt="论文降 AI 率提示词与学术写作优化封面" loading="lazy" decoding="async"&gt;&lt;/p&gt;&#10;&lt;p&gt;你的角色与目标：&lt;/p&gt;&#10;&lt;p&gt;你现在扮演一个专业的“论文（或技术文档）修改助手”。你的核心任务是接收一段中文原文（通常是技术性或学术性的描述），并将其改写成一种特定的风格。这种风格的特点是：比原文稍微啰嗦、更具解释性、措辞上更偏向通俗或口语化（但保持专业底线），并且系统性地使用特定的替代词汇和句式结构。 你的目标是精确地模仿分析得出的修改模式，生成“修改后”风格的文本，同时务必保持原文的核心技术信息、逻辑关系和事实准确性，也不要添加过多的字数。&#10;注意不要过于口语化（通常情况下不会过于口语化，有一些比如至于xxx呢，这种的不要有）&#10;注意！你输出的内容不应原多于原文！应时刻记得字数和原文相符！&#10;注意！不要有‘’xxx呢‘’这种形式，如‘至于vue呢’&#10;不要第一人称&#10;输入与输出：&lt;/p&gt;&#10;&lt;p&gt;输入： 一段中文原文（标记为“原文”）。&#10;输出： 一段严格按照以下规则修改后的中文文本（标记为“修改后”）。&#10;核心修改手法与规则（请严格遵守）：&lt;/p&gt;&#10;&lt;p&gt;增加冗余与解释性（Verbose Elaboration）：&lt;/p&gt;&#10;&lt;p&gt;动词短语扩展： 将简洁的动词或动词短语替换为更长的、带有动作过程描述的短语。&#10;示例：“管理” -&amp;gt; “开展...的管理工作” 或 “进行管理”&#10;示例：“交互” -&amp;gt; “进行交互” 或 “开展交互”&#10;示例：“配置” -&amp;gt; “进行配置”&#10;示例：“处理” -&amp;gt; “去处理...工作”&#10;示例：“恢复” -&amp;gt; “进行恢复”&#10;示例：“实现” -&amp;gt; “得以实现” 或 “来实现”&#10;增加辅助词/结构： 在句子中添加语法上允许但非必需的词语，使句子更饱满。&#10;示例：适当增加 “了”、“的”、“地”、“所”、“会”、“可以”、“这个”、“方面”、“当中” 等。&#10;示例：“提供功能” -&amp;gt; “有...功能” 或 “拥有...功能”&#10;系统性词汇替换（Systematic Synonym/Phrasing Substitution）：&lt;/p&gt;&#10;&lt;p&gt;特定动词/介词/连词替换： 将原文中常用的某些词汇固定地替换为特定的替代词。这是模仿目标风格的关键。&#10;采用 / 使用 -&amp;gt; 运用 / 选用 / 把...当作...来使用&#10;基于 -&amp;gt; 鉴于 / 基于...来开展&#10;利用 -&amp;gt; 借助 / 运用 / 凭借&#10;通过 -&amp;gt; 借助 / 依靠 / 凭借&#10;和 / 及 / 与 -&amp;gt; 以及 （尤其是在列举多项时）&#10;并 -&amp;gt; 并且 / 还 / 同时&#10;其 -&amp;gt; 它 / 其 （可根据语境选择，有时用“它”更口语化）&#10;特定名词/形容词替换：&#10;原因 -&amp;gt; 缘由 / 主要原因囊括...&#10;符合 -&amp;gt; 契合&#10;适合 -&amp;gt; 适宜&#10;特点 -&amp;gt; 特性&#10;提升 / 提高 -&amp;gt; 提高 / 提升 （可互换使用，保持多样性）&#10;极大(地) -&amp;gt; 极大程度(上)&#10;立即 -&amp;gt; 马上&#10;括号内容处理（Bracket Content Integration/Removal）：&lt;/p&gt;</description></item><item><title>转移域名通知</title><link>https://blogtypecho.maxtrnn.top/post/201/</link><pubDate>Mon, 26 May 2025 11:26:06 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/201/</guid><description>&lt;p&gt;&lt;img src="https://img.maxnn.top/file/1781192702058_9.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;考虑到原域名 maxtral.fun 的续费成本过高，长期运营入不敷出，该域名将于今年6月到期。为了降低运营成本并保持网站的持续可用性，我决定迁移至更经济实惠的域名。&lt;/p&gt;&#10;&lt;p&gt;经过比较，我已在腾讯云购买了 blog.maxtrnn.top 域名，并续费了两年。目前正在进行备案，预计三周左右可以完成。备案成功后，新的博客网站即可正式上线启用，取代当前的 maxtral.fun。&lt;/p&gt;&#10;&lt;p&gt;除了博客网站，其他相关网站也将陆续更换域名。由于涉及到多个域名的 DNS 解析管理，我需要选择一个合适的 DNS 服务提供商。目前考虑的方案有：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;腾讯云 DNS 解析：&lt;/strong&gt; 域名是在腾讯云购买的，使用腾讯云的 DNS 解析服务可以更好地集成和管理。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;阿里云 DNS 解析：&lt;/strong&gt; 阿里云在 DNS 解析方面拥有丰富的经验和稳定的服务，但需要额外配置。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cloudflare (CF)：&lt;/strong&gt; Cloudflare 提供免费的 SSL 证书和 CDN 加速服务，可以提升网站的安全性和访问速度，但需要将域名托管到 Cloudflare。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;综合考虑各方面的因素，我需要仔细权衡，选择一个最适合我的 DNS 解析方案，以确保网站的稳定运行和最佳性能。&lt;/p&gt;&#10;&lt;p&gt;总结最后走的是cf maxtrnn.top!!!!!&lt;/p&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/online-travel-guide-website-z1xgwkm/</link><pubDate>Wed, 18 Dec 2024 14:29:39 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/online-travel-guide-website-z1xgwkm/</guid><description>&lt;h1 id="在线旅游攻略网站"&gt;在线旅游攻略网站&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;由于gitee的pr无法展示我的引述了 故修改到博客来展示了&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241218222235.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;h1 id="更新日志"&gt;更新日志&lt;/h1&gt;&#10;&lt;h2 id="之前"&gt;之前&lt;/h2&gt;&#10;&lt;h2 id="已经完成功能"&gt;已经完成功能&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 新增一些页面 和 交互&lt;/li&gt;&#10;&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 新增一些后端 API&lt;/li&gt;&#10;&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 调试大部分的的后端 API&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="已经完成api调试"&gt;已经完成API调试&lt;/h2&gt;&#10;&lt;h3 id="公开服务管理接口"&gt;公开服务管理接口&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/services&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取服务列表&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/services/{id}&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取服务详情&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/services/{serviceId}/comments&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取服务评论&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="公开文章管理接口"&gt;公开文章管理接口&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取所有文章&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts/{id}&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取文章详情&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts/{postId}/comments&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取文章评论&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts/hot&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取热门文章&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts/latest&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取最新文章&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/public/posts/search&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;搜索文章&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="认证接口"&gt;认证接口&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;POST &lt;code&gt;/api/auth/admin/login&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;管理员登录&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;POST &lt;code&gt;/api/auth/register&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;用户注册&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;POST &lt;code&gt;/api/auth/login&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;用户登录&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="用户接口"&gt;用户接口&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/user/services&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取服务列表&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/user/posts/my&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取我的文章&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GET &lt;code&gt;/api/user/profile&lt;/code&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取个人资料&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="管理员接口"&gt;管理员接口&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;GET &lt;code&gt;/api/admin/statistics&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;获取API统计信息&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="未来计划的"&gt;未来计划的&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;调试更多的后端 API&lt;/li&gt;&#10;&lt;li&gt;与前端融合后端 API&lt;/li&gt;&#10;&lt;li&gt;根据 SonarQube 优化代码 &lt;img src="https://foruda.gitee.com/images/1734233495597491466/d082fa44_12592644.png" alt="输入图片说明" title="屏幕截图"&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/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>MAX-门户页面-1</title><link>https://blogtypecho.maxtrnn.top/post/maxportal-page1-2rbpib/</link><pubDate>Sun, 01 Dec 2024 16:32:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxportal-page1-2rbpib/</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/"&gt;MAX-门户-1&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/20241202002708.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;搜索框输入内容摁下回车enter或者点击搜索图标进入百度搜索&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202002830.png" alt="image"&gt;&#10;‍&lt;/p&gt;&#10;&lt;/li&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/20241202002929.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;公告点击查看max发布的公告&lt;/li&gt;&#10;&lt;li&gt;留言板可以选择留言内容，包括反馈建议等，需要邮箱支持，因为可以邮箱通知你谁回复你了&lt;/li&gt;&#10;&lt;li&gt;计划任务，可以看见max关于中国门户网页的计划和历程&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h1 id="更多地址教程"&gt;更多地址教程&lt;/h1&gt;&#10;&lt;p&gt;2024年12月2日00:32:35 待编写&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;‍&lt;/p&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>MAX-视频播放-1</title><link>https://blogtypecho.maxtrnn.top/post/maxvideo-play1-4xafg/</link><pubDate>Sun, 01 Dec 2024 16:21:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/maxvideo-play1-4xafg/</guid><description>&lt;h1 id="max-视频播放-1"&gt;MAX-视频播放-1&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;视频播放平台-1，包含使用教程和源码介绍和特性的功能&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h1 id="使用教程"&gt;使用教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;打开页面：&lt;a href="http://videotemp-1.maxtral.fun/index.html"&gt;MAX视频系统&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;选择用户登录（硬要选也没办法，破解管理员也没啥意思，最多被咒骂4000+）&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202000735.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;选择左侧的播放列表的一个视频&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202000749.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;li&gt;点击播放&lt;/li&gt;&#10;&lt;li&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241202000800.png" alt="image"&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;没了，这只能那么简单了，写个p的教程，that‘s it！&lt;/p&gt;&#10;&lt;h1 id="源码解析"&gt;源码解析&lt;/h1&gt;&#10;&lt;h2 id="片段1"&gt;片段1&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-cmd" data-lang="cmd"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;!DOCTYPE html&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;html lang=&lt;span style="color:#f1fa8c"&gt;&amp;#34;zh&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;head&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;meta charset=&lt;span style="color:#f1fa8c"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;title&amp;gt;MAX视频系统&amp;lt;/title&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;style&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; margin: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; box-sizing: border-box;&#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; body {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; min-height: 100vh;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-family: -apple-system, BlinkMacSystemFont, &lt;span style="color:#f1fa8c"&gt;&amp;#34;Segoe UI&amp;#34;&lt;/span&gt;, Roboto, sans-serif;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: url(&amp;#39;/images/back.jpg&amp;#39;) center/cover no-repeat fixed;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; display: flex;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; align-items: center;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; justify-content: center;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; position: relative;&#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; body::before {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; content: &amp;#39;&amp;#39;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; position: absolute;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; top: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; left: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; right: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bottom: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: rgba(0, 0, 0, 0.5);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; backdrop-filter: blur(10px);&#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; .container {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; position: relative;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-align: center;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding: 40px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: rgba(255, 255, 255, 0.9);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; border-radius: 16px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; backdrop-filter: blur(5px);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max-width: 500px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width: 90%;&#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; .logo {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-bottom: 30px;&#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; .logo h1 {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-size: 32px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;color&lt;/span&gt;: #1D1D1F;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-bottom: 10px;&#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; .logo p {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-size: 16px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;color&lt;/span&gt;: #666;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; line-height: 1.6;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; margin-bottom: 40px;&#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; .buttons {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; display: flex;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gap: 20px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; justify-content: center;&#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; .btn {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding: 15px 40px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; border-radius: 12px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-size: 16px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-weight: 500;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-decoration: none;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; transition: all 0.3s ease;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; border: none;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cursor: pointer;&#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; .btn-primary {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: #007AFF;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;color&lt;/span&gt;: white;&#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; .btn-primary:hover {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: #0066DD;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; transform: translateY(-2px);&#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; .btn-secondary {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: rgba(255, 255, 255, 0.8);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;color&lt;/span&gt;: #1D1D1F;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; border: 1px solid #E5E5E5;&#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; .btn-secondary:hover {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; background: rgba(255, 255, 255, 1);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; transform: translateY(-2px);&#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; .footer {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; position: absolute;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; bottom: 20px;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; left: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; right: 0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text-align: center;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;color&lt;/span&gt;: rgba(255, 255, 255, 0.8);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; font-size: 14px;&#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; @media (max-width: 480px) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .container {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; padding: 30px 20px;&#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; .buttons {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; flex-direction: column;&#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; .btn {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; width: 100%;&#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; &amp;lt;/style&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/head&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;body&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;container&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;logo&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;h1&amp;gt;MAX视频系统&amp;lt;/h1&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;p&amp;gt;由MAX精心打造的视频管理系统&amp;lt;br&amp;gt;安全、稳定、高效的视频播放解决方案&amp;lt;/p&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;buttons&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;a href=&lt;span style="color:#f1fa8c"&gt;&amp;#34;user.php&amp;#34;&lt;/span&gt; class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;btn btn-primary&amp;#34;&lt;/span&gt;&amp;gt;用户入口&amp;lt;/a&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;a href=&lt;span style="color:#f1fa8c"&gt;&amp;#34;admin.php&amp;#34;&lt;/span&gt; class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;btn btn-secondary&amp;#34;&lt;/span&gt;&amp;gt;管理员入口&amp;lt;/a&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;div class=&lt;span style="color:#f1fa8c"&gt;&amp;#34;footer&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;p&amp;gt;© 2024 MAX视频系统 版权所有&amp;lt;/p&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/div&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/body&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/html&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="max视频系统页面设计分析"&gt;MAX视频系统页面设计分析&lt;/h3&gt;&#10;&lt;h4 id="页面结构概览"&gt;页面结构概览&lt;/h4&gt;&#10;&lt;p&gt;在这个代码片段中，我们定义了一个简单的网页，主要用于展示 MAX 视频系统。这种设计涵盖了页面的基本骨架，包括头部、主体和底部。代码结构清晰，使用 HTML 和 CSS实现美观的用户界面。&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/quotationreverie-z1p8k2e/</link><pubDate>Fri, 29 Nov 2024 08:06:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/quotationreverie-z1p8k2e/</guid><description>&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241201112506.jpg" alt="image"&gt;&lt;/p&gt;&#10;&lt;h1 id="引文-遐想"&gt;引文-遐想&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;为什么有的时候乱思考一通，说高级点就是如同题目的名字&amp;ndash;遐想，低俗点也行是瞎想，hhh，过于低俗化可不好&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241129162705.jpg" alt="VCG211376059265"&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h1 id="max-第一篇随手记"&gt;MAX 第一篇随手记&lt;/h1&gt;&#10;&lt;p&gt;话说我下载使用的笔记软件也不少了吧，但为何没有具体投入使用呢?&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;span data-type="text" style="background-color: var(--b3-font-background13); color: var(--b3-font-color7); font-size: 24px; text-shadow: 1px 1px var(--b3-theme-surface-lighter), 2px 2px var(--b3-theme-surface-lighter), 3px 3px var(--b3-theme-surface-lighter), 4px 4px var(--b3-theme-surface-lighter);"&gt;也许和我的性格大大相关罢了，差生笔记多，多想多说但是不多干，有时候自我安慰总是，至少我想了，想了是思考了，也许吧。但是只要真正的记录下来，未来的某一天再回看，回顾的时候才会发现，哇，我那个的时候的想法是这样的啊，但是没记下来写下来，可能过一阵子就忘了，是的。记下来总是好的，总是留下点什么东西给记忆的&lt;/span&gt; &lt;strong&gt;。&lt;/strong&gt;&lt;/p&gt;&#10;&lt;/li&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/20241129162842.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;/p&gt;&#10;&lt;p&gt;That is it！&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;好难啊，联系打字，我目前还是很怪异，单个&lt;/p&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;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;‍&lt;/p&gt;</description></item><item><title>Coze测试文章+Vue主页项目介绍（惊喜一餐）</title><link>https://blogtypecho.maxtrnn.top/post/172/</link><pubDate>Wed, 27 Nov 2024 10:46:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/172/</guid><description>&lt;h1 id="基于vue的餐饮与用户管理功能代码分析"&gt;基于Vue的餐饮与用户管理功能代码分析&lt;/h1&gt;&#10;&lt;h2 id="一餐饮推荐功能"&gt;一、餐饮推荐功能&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]此部分代码实现了餐饮推荐相关功能，包括餐厅和菜品展示、随机推荐以及页面跳转等功能。界面布局美观，交互性较好。[/scode]&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;home-container&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;background-gradient&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;overlay&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;content-wrapper&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;header-section&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h1&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&amp;gt;惊喜一餐-zhn&amp;lt;/&lt;span style="color:#ff79c6"&gt;h1&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;divider&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;line&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;dot&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;line&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;subtitle&amp;#34;&lt;/span&gt;&amp;gt;臻选星级美馔 · 品鉴非凡味境&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;recommendation-section&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;section-title&amp;#34;&lt;/span&gt;&amp;gt;今日推荐&amp;lt;/&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-row&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;:gutter&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;20&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-col&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;:span&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;12&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-card&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;restaurant-card&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;shadow&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;hover&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt; #&lt;span style="color:#50fa7b"&gt;header&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;card-header&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;精选餐厅&amp;lt;/&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;text&lt;/span&gt; @&lt;span style="color:#50fa7b"&gt;click&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;refreshRestaurant&amp;#34;&lt;/span&gt;&amp;gt;换一个&amp;lt;/&lt;span style="color:#ff79c6"&gt;el-button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-image&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;:src&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;randomRestaurant.image&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:#50fa7b"&gt;fit&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;cover&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:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;restaurant-image&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:#50fa7b"&gt;click&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;goToRestaurant(randomRestaurant.id)&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;restaurant-info&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;{{ randomRestaurant.name }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-rate&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;v-model&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;randomRestaurant.rating&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;disabled&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;show-score&lt;/span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&amp;gt;{{ randomRestaurant.description }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;el-card&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;el-col&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-col&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;:span&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;12&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-card&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;dish-card&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;shadow&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;hover&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt; #&lt;span style="color:#50fa7b"&gt;header&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;card-header&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;特色美食&amp;lt;/&lt;span style="color:#ff79c6"&gt;span&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;text&lt;/span&gt; @&lt;span style="color:#50fa7b"&gt;click&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;refreshDish&amp;#34;&lt;/span&gt;&amp;gt;换一个&amp;lt;/&lt;span style="color:#ff79c6"&gt;el-button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-image&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;:src&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;randomDish.image&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:#50fa7b"&gt;fit&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;cover&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:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;dish-image&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:#50fa7b"&gt;click&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;goToDish(randomDish.id)&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;dish-info&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;{{ randomDish.name }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;restaurant-name&amp;#34;&lt;/span&gt;&amp;gt;{{ randomDish.restaurantName }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;el-rate&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;v-model&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;randomDish.rating&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;disabled&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;show-score&lt;/span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&amp;gt;{{ randomDish.description }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;price&amp;#34;&lt;/span&gt;&amp;gt;¥{{ randomDish.price }}&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;el-card&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;el-col&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;el-row&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;template&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;setup&lt;/span&gt;&amp;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; { ref, onMounted } from &lt;span style="color:#f1fa8c"&gt;&amp;#39;vue&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;vue-router&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;&lt;span style="color:#ff79c6"&gt;const&lt;/span&gt; randomRestaurant &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ref({})&#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; randomDish &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ref({})&#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; topRestaurants &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ref([&#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; id&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; 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; rating&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;4.9&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;/Restaurant/Restaurant1.png&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; description&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; },&#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;]);&#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; allDishes &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; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id&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; 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; restaurantName&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; rating&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;4.9&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; price&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;688&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;/foods/food1.jpg&amp;#39;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; description&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;精选A5和牛配以黑松露，口感细腻，香气四溢&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;// 其他菜品数据&#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;const&lt;/span&gt; selectRandomRestaurant &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; () =&amp;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; randomIndex &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Math&lt;/span&gt;.floor(&lt;span style="color:#8be9fd;font-style:italic"&gt;Math&lt;/span&gt;.random() &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; topRestaurants.value.length)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; randomRestaurant.value &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; topRestaurants.value[randomIndex]&#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; selectRandomDish &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; () =&amp;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; randomIndex &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Math&lt;/span&gt;.floor(&lt;span style="color:#8be9fd;font-style:italic"&gt;Math&lt;/span&gt;.random() &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; allDishes.length)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; randomDish.value &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; allDishes[randomIndex]&#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; refreshRestaurant &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; () =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; selectRandomRestaurant();&#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; refreshDish &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; () =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; selectRandomDish();&#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; goToRestaurant &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (id) =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; router.push(&lt;span style="color:#f1fa8c"&gt;`/restaurant/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;id&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&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;const&lt;/span&gt; goToDish &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; (id) =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; router.push(&lt;span style="color:#f1fa8c"&gt;`/dish/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;id&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&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;onMounted(() =&amp;gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; selectRandomRestaurant();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; selectRandomDish();&#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;&amp;lt;/&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="二餐厅管理功能"&gt;二、餐厅管理功能&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]这部分代码实现了餐厅管理功能，如餐厅的添加、查看、编辑和删除等操作，操作逻辑清晰。[/scode]&lt;/p&gt;</description></item><item><title>我的音乐平台</title><link>https://blogtypecho.maxtrnn.top/post/167/</link><pubDate>Wed, 13 Nov 2024 16:48:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/167/</guid><description>&lt;p&gt;###我的音乐平台&lt;/p&gt;&#10;&lt;p&gt;本项目是一个基于React的音乐平台，用户可以在平台上进行歌曲搜索、播放以及享受随机播放功能。平台支持歌曲的播放、暂停、切换以及持续随机播放功能，提供了简洁易用的界面和良好的用户体验。以下是平台的功能介绍和实现细节。&lt;/p&gt;&#10;&lt;h2 id="1-项目概述"&gt;1. 项目概述&lt;/h2&gt;&#10;&lt;p&gt;我的音乐平台的核心功能是通过一个搜索框，用户可以搜索到自己喜欢的歌曲并播放。平台内置了随机播放和持续随机播放功能，能够根据用户需求实时播放热门音乐。平台的设计简洁，操作直观，用户可以通过搜索框、播放控制按钮等轻松操作。&lt;/p&gt;&#10;&lt;p&gt;您可以通过以下链接访问项目：[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://music.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]访问音乐平台[/button]&lt;/p&gt;&#10;&lt;h2 id="2-搜索功能"&gt;2. 搜索功能&lt;/h2&gt;&#10;&lt;p&gt;平台的核心功能之一是歌曲搜索。用户可以通过输入歌曲名称来搜索相关的音乐，搜索结果将显示相关歌曲的列表，用户可以选择其中一首进行播放。平台会展示歌曲的名称、艺术家信息以及专辑封面等详细信息。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;red&amp;rdquo;]下一步目标：计划在搜索功能中加入更多过滤选项，允许用户按照艺术家、专辑等进行更精确的筛选。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;SearchBar&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;onSearch&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleSearch} /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-随机播放功能"&gt;3. 随机播放功能&lt;/h2&gt;&#10;&lt;p&gt;平台支持随机播放功能，用户点击“随机播放飙升音乐”按钮后，平台会自动选择一首随机的热门歌曲并开始播放。该功能帮助用户发现新歌，并能随时体验到不同风格的音乐。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;blue&amp;rdquo;]下一步目标：进一步优化随机播放逻辑，允许用户根据音乐类别、风格进行筛选，提升音乐推荐的精准度。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;onClick&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleRandomPlay} &lt;span style="color:#50fa7b"&gt;className&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;random-play-button&amp;#34;&lt;/span&gt;&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;&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-持续随机播放功能"&gt;4. 持续随机播放功能&lt;/h2&gt;&#10;&lt;p&gt;除了普通的随机播放外，平台还提供了持续随机播放的选项。启用此功能后，平台将在当前歌曲播放结束后自动播放下一首随机歌曲，保证用户可以不断地听到新歌，提升音乐体验。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]下一步目标：实现持续随机播放的优化功能，确保无缝播放并在歌曲之间减少加载时间，提升用户的听歌体验。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;onClick&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleContinuousRandomPlay}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;className&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;continuous-random-play-button&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {isContinuousRandom &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:#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;&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5-播放器组件"&gt;5. 播放器组件&lt;/h2&gt;&#10;&lt;p&gt;平台内的播放器组件提供了基本的播放控制功能，包括播放、暂停、上一首、下一首等操作。用户可以通过播放器随时控制音乐的播放进度，并且可以查看当前播放的歌曲信息。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;blue&amp;rdquo;]下一步目标：优化播放器界面，增加歌词显示、音量调节等功能，使其更加全面和实用。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;Player&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;song&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{selectedSong}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;ref&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{audioRef}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;onPrevious&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handlePrevious}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;onNext&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleNext}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;hasPrevious&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{currentIndex &lt;span style="color:#ff79c6"&gt;&amp;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:#50fa7b"&gt;hasNext&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{&lt;span style="color:#ff79c6"&gt;true&lt;/span&gt;} // &lt;span style="color:#50fa7b"&gt;始终显示&lt;/span&gt;“&lt;span style="color:#50fa7b"&gt;下一首&lt;/span&gt;”&lt;span style="color:#50fa7b"&gt;按钮&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="6-播放列表管理"&gt;6. 播放列表管理&lt;/h2&gt;&#10;&lt;p&gt;平台支持播放列表功能，每次选择歌曲播放时，平台会将该歌曲添加到播放列表中。用户可以通过控制按钮来浏览整个播放列表，切换到之前或之后的歌曲，享受更加自由的音乐播放体验。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;red&amp;rdquo;]下一步目标：在播放列表中加入歌曲删除和排序功能，让用户可以自由管理播放列表中的歌曲。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-jsx" data-lang="jsx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;SongList&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;songs&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{songs} &lt;span style="color:#50fa7b"&gt;onSelect&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;{handleSelectSong} /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="7-弹窗与交互"&gt;7. 弹窗与交互&lt;/h2&gt;&#10;&lt;p&gt;为了提升用户体验，平台中的某些功能，如加载提示、错误提示等，都会使用弹窗进行展示。这些弹窗信息直接反馈给用户，帮助用户快速了解当前操作状态。&lt;/p&gt;&#10;&lt;h2 id="8-小结"&gt;8. 小结&lt;/h2&gt;&#10;&lt;p&gt;我的音乐平台通过简洁、直观的设计提供了强大的功能，用户可以方便地进行歌曲搜索、播放，并体验到随机播放和持续随机播放等创新功能。随着平台的不断发展，我们计划在后续版本中进一步优化现有功能，增强用户的互动性和音乐体验。&lt;/p&gt;</description></item><item><title>关于我的门户页面</title><link>https://blogtypecho.maxtrnn.top/post/166/</link><pubDate>Wed, 13 Nov 2024 16:39:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/166/</guid><description>&lt;hr&gt;&#10;&lt;h1 id="门户页面功能介绍"&gt;门户页面功能介绍&lt;/h1&gt;&#10;&lt;p&gt;本项目的门户页面旨在提供一个简洁、互动性强的用户体验，结合了任务管理、留言板、公告等多种功能，支持实时数据展示和互动。用户可以在此页面上高效地管理自己的任务、查看公告信息以及参与留言互动。以下是对各个功能模块的详细介绍。&lt;/p&gt;&#10;&lt;h2 id="1-项目入口"&gt;1. 项目入口&lt;/h2&gt;&#10;&lt;p&gt;门户页面作为整个项目的入口，提供了简洁的导航和清晰的布局，用户可以快速访问各项功能。您可以通过以下链接访问项目首页：[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]访问首页[/button]。&lt;/p&gt;&#10;&lt;h2 id="2-实时时间显示"&gt;2. 实时时间显示&lt;/h2&gt;&#10;&lt;p&gt;页面顶部会显示当前的时间，并每秒钟更新一次，确保用户能够随时了解时间。这一功能通过 &lt;code&gt;timeButton&lt;/code&gt; 按钮呈现，用户可以点击按钮查看详细时间。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;red&amp;rdquo;]下一步，我计划在项目中进一步优化时间显示功能，考虑加入更多的时区支持，确保不同地区的用户都能看到准确的本地时间。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;timeButton&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;onclick&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;showTime()&amp;#34;&lt;/span&gt;&amp;gt;显示时间&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;timeDisplay&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&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;&amp;lt;&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;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;function&lt;/span&gt; showTime() {&#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; date &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;new&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Date&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;document&lt;/span&gt;.getElementById(&lt;span style="color:#f1fa8c"&gt;&amp;#34;timeDisplay&amp;#34;&lt;/span&gt;).innerHTML &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; date.toLocaleTimeString();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; setTimeout(showTime, &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;&amp;lt;/&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="3-搜索功能"&gt;3. 搜索功能&lt;/h2&gt;&#10;&lt;p&gt;搜索框功能允许用户在页面中进行信息查询。用户可以输入关键词进行搜索，并通过点击搜索按钮或按下 &lt;code&gt;Enter&lt;/code&gt; 键进行触发。搜索结果会在新页面中展示，确保用户能够快速找到所需内容。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;input&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchInput&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;placeholder&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入搜索内容&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;onclick&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchContent()&amp;#34;&lt;/span&gt;&amp;gt;搜索&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&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;&amp;lt;&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;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;function&lt;/span&gt; searchContent() {&#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 &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;document&lt;/span&gt;.getElementById(&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchInput&amp;#34;&lt;/span&gt;).value;&#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; alert(&lt;span style="color:#f1fa8c"&gt;&amp;#39;搜索结果: &amp;#39;&lt;/span&gt; &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; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-任务管理"&gt;4. 任务管理&lt;/h2&gt;&#10;&lt;p&gt;任务管理模块提供了任务的查看与管理功能，分为三个主要状态：待开发、开发中、已完成。每个任务都包括任务名称、描述、创建时间和更新时间等信息。任务列表会根据更新时间进行排序，确保用户能够第一时间看到最新的任务。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;blue&amp;rdquo;]下一阶段目标：我计划优化任务管理模块，加入任务排序和过滤功能，使得用户可以根据不同的需求快速找到自己关心的任务状态。[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;前端代码：&lt;/strong&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;taskList&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-status&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;待开发&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;任务 1&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;描述: 开发新的功能&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;状态: 待开发&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-status&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;开发中&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;任务 2&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;描述: 修复Bug&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;状态: 开发中&amp;lt;/&lt;span style="color:#ff79c6"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 更多任务 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&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;&amp;lt;&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;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; tasks &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;document&lt;/span&gt;.querySelectorAll(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.task&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:#6272a4"&gt;// 根据任务状态进行排序或过滤&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="5-公告模块"&gt;5. 公告模块&lt;/h2&gt;&#10;&lt;p&gt;公告模块会展示项目的最新公告信息，用户点击公告按钮后可以查看详细内容。公告内容支持简单的文本展示，并根据需要进行更新。&lt;/p&gt;</description></item><item><title>关于最近的新项目</title><link>https://blogtypecho.maxtrnn.top/post/147/</link><pubDate>Wed, 06 Nov 2024 00:12:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/147/</guid><description>&lt;p&gt;以下是修改后的完整博客文章，已经按照要求使用了代码格式展示代码、使用 &lt;code&gt;scode&lt;/code&gt; 说明内容，并使用按钮链接格式提供项目地址：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h1 id="新开了服务器并安装了新项目"&gt;新开了服务器并安装了新项目&lt;/h1&gt;&#10;&lt;p&gt;近期，我新开了一个服务器，并在其上安装了两个操作系统：一个是 Windows，另一个是 Ubuntu。这个新环境为我的项目提供了更好的部署和管理空间。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://bucket.maxtral.fun/typecho/2024/11/06/2024-11-06T08:31:13.png" alt="2024-11-06T08:31:13.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;之后，我计划会添加更多的项目，提升整体的功能和服务。为了更好地展示这些项目，我新建了一个门户页面。&lt;/p&gt;&#10;&lt;p&gt;新的门户页面链接：&lt;a href="https://home.maxtral.fun/"&gt;https://home.maxtral.fun/&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="说明"&gt;说明：&lt;/h2&gt;&#10;&lt;p&gt;下面是当前项目中的一些关键代码：&lt;/p&gt;&#10;&lt;h3 id="html-结构"&gt;HTML 结构：&lt;/h3&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-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;html&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;lang&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;zh-CN&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;head&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;meta&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;charset&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;meta&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;name&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;viewport&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;content&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;width=device-width, initial-scale=1.0&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;title&lt;/span&gt;&amp;gt;MAX-门户-1&amp;lt;/&lt;span style="color:#ff79c6"&gt;title&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;link&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;rel&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;href&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;styles.css&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;head&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;body&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;src&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;dist/bundle.js&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;defer&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;script&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;container&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;background&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;blurContainer&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;navigation&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;navigation&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 时间显示框 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;time-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;timeButton&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- JavaScript 将在此处插入当前时间 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 搜索框和搜索图标 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;search-wrapper&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;for&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchInput&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;input&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#50fa7b"&gt;type&lt;/span&gt;&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; &lt;span style="color:#50fa7b"&gt;placeholder&lt;/span&gt;&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:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchInput&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:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;search-input&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;search-icon&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;searchButton&amp;#34;&lt;/span&gt;&amp;gt;&amp;amp;#128269;&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 搜索图标按钮 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 公告弹窗 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;popup-content&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;announcementPopup&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;close-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-popup&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;announcementPopup&amp;#34;&lt;/span&gt;&amp;gt;关闭&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;announcement-content&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 公告内容将通过 JavaScript 从 announcement.txt 加载 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 留言板弹窗 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;popup-content&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;commentPopup&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;close-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-popup&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;commentPopup&amp;#34;&lt;/span&gt;&amp;gt;关闭&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;留言板&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 留言表单 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;message-form&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;input-group&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;for&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;nickname&amp;#34;&lt;/span&gt;&amp;gt;昵称&amp;lt;/&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;input&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;type&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;text&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;nickname&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;input&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;placeholder&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入你的昵称&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;nicknameError&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&amp;gt;请输入昵称&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;input-group&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;for&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;newMessage&amp;#34;&lt;/span&gt;&amp;gt;留言内容&amp;lt;/&lt;span style="color:#ff79c6"&gt;label&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;textarea&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;newMessage&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;textarea&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;placeholder&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;写下你的留言...&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;textarea&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;messageError&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;&amp;gt;请输入留言内容&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;button-container&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;button submit-message-button&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;svg&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;width&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;16&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;height&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;16&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;viewBox&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;0 0 24 24&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;fill&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;none&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;stroke&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;currentColor&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;stroke-width&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;path&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;d&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;path&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;svg&lt;/span&gt;&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; &amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 留言列表 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;messageList&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;message-list&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- Messages will be inserted here --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 计划任务弹窗 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;popup-content&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;taskPopup&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;close-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-popup&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;taskPopup&amp;#34;&lt;/span&gt;&amp;gt;关闭&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&amp;gt;计划任务管理&amp;lt;/&lt;span style="color:#ff79c6"&gt;h3&lt;/span&gt;&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; &lt;span style="color:#6272a4"&gt;&amp;lt;!-- 任务表单已移除，游客无法添加任务 --&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:#6272a4"&gt;&amp;lt;!-- 折叠任务区块 --&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-section&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;section-title&amp;#34;&lt;/span&gt;&amp;gt;待开发任务&amp;lt;/&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;toggle-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-section&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;pendingTasks&amp;#34;&lt;/span&gt;&amp;gt;展开&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;pendingTasks&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-list collapsed&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&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; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-section&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;section-title&amp;#34;&lt;/span&gt;&amp;gt;开发中任务&amp;lt;/&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;toggle-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-section&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;inProgressTasks&amp;#34;&lt;/span&gt;&amp;gt;展开&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;inProgressTasks&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-list collapsed&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-section&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;section-title&amp;#34;&lt;/span&gt;&amp;gt;已完成任务&amp;lt;/&lt;span style="color:#ff79c6"&gt;h2&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;toggle-button&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;data-section&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;completedTasks&amp;#34;&lt;/span&gt;&amp;gt;展开&amp;lt;/&lt;span style="color:#ff79c6"&gt;button&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;id&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;completedTasks&amp;#34;&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;class&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;task-list collapsed&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;body&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#ff79c6"&gt;html&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="样式表css"&gt;样式表（CSS）：&lt;/h3&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-css" data-lang="css"&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;body&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;,&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;html&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;margin&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;padding&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;width&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&lt;span style="color:#8be9fd"&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;height&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&lt;span style="color:#8be9fd"&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;font-family&lt;/span&gt;: Arial, &lt;span style="color:#ff79c6"&gt;sans-serif&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:#50fa7b"&gt;container&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;display&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;flex&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;flex-direction&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;column&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;align-items&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;center&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;justify-content&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;flex-start&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;height&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;vh&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;position&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;relative&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;padding-top&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;vh&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:#50fa7b"&gt;background&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;position&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;absolute&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;inset&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;background-image&lt;/span&gt;: &lt;span style="color:#8be9fd;font-style:italic"&gt;url&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;backgrand.jpg&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;background-size&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;cover&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;background-position&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;center&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;transition&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;all&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;s&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;filter&lt;/span&gt;: &lt;span style="color:#8be9fd;font-style:italic"&gt;blur&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;) &lt;span style="color:#8be9fd;font-style:italic"&gt;brightness&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&lt;span style="color:#8be9fd"&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:#50fa7b"&gt;background&lt;/span&gt;.&lt;span style="color:#50fa7b"&gt;active&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;filter&lt;/span&gt;: &lt;span style="color:#8be9fd;font-style:italic"&gt;blur&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt;) &lt;span style="color:#8be9fd;font-style:italic"&gt;brightness&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;75&lt;/span&gt;&lt;span style="color:#8be9fd"&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:#50fa7b"&gt;navigation&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;display&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;flex&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;flex-direction&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;column&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;align-items&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;center&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;gap&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;rem&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;position&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;relative&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;z-index&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="color:#ff79c6"&gt;width&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;100&lt;/span&gt;&lt;span style="color:#8be9fd"&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;max-width&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;64&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;rem&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:#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:#50fa7b"&gt;time-button&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;font-size&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;rem&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;color&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;white&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;background&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;#216b94&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;border&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;border-radius&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&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;outline&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;cursor&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; &lt;span style="color:#ff79c6"&gt;user-select&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; pointer-events: &lt;span style="color:#ff79c6"&gt;auto&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;padding&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;20&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&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;box-shadow&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;15&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;rgba&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.2&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#bd93f9"&gt;-5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;-5&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;15&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;rgba&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.3&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;transition&lt;/span&gt;: &lt;span style="color:#ff79c6"&gt;all&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.3&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;s&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;ease&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:#50fa7b"&gt;time-button&lt;/span&gt;:hover {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;box-shadow&lt;/span&gt;: &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;rgba&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.3&lt;/span&gt;),&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#bd93f9"&gt;-2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;-2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;rgba&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;255&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0.4&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;transform&lt;/span&gt;: &lt;span style="color:#8be9fd;font-style:italic"&gt;translateY&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;-2&lt;/span&gt;&lt;span style="color:#8be9fd"&gt;px&lt;/span&gt;) &lt;span style="color:#8be9fd;font-style:italic"&gt;scale&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1.05&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;h3 id="项目地址"&gt;项目地址：&lt;/h3&gt;&#10;&lt;h2 id="2024-11-13t162053png"&gt;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://home.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]体验地址[/button]&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/11/14/2024-11-13T16:20:53.png" alt="2024-11-13T16:20:53.png"&gt;&lt;/h2&gt;&#10;&lt;p&gt;新的状态页面：[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://nezha.maxtral.fun/&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]状态页面[/button]&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/11/14/2024-11-13T16:21:43.png" alt="2024-11-13T16:21:43.png"&gt;&#10;哪吒面板是一个开源、轻量、易用的服务器监控与运维工具。以下是&lt;strong&gt;哪吒面板的Docker安装代码&lt;/strong&gt;：&lt;/p&gt;</description></item><item><title>README的乐趣</title><link>https://blogtypecho.maxtrnn.top/post/145/</link><pubDate>Wed, 06 Nov 2024 00:09:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/145/</guid><description>&lt;p&gt;下面是根据你提供的要求和格式改写后的文章：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h1 id="使用-stats-cards-项目展示小卡片"&gt;使用 Stats-Cards 项目展示小卡片&lt;/h1&gt;&#10;&lt;p&gt;最近我发现一个非常有趣的小项目，&lt;code&gt;stats-cards&lt;/code&gt;，它可以将 GitHub 项目的 &lt;code&gt;README.md&lt;/code&gt; 文件转化为卡片式展示。通过这个项目，我们可以将文本、图片或其他内容以一种更加生动和直观的形式展示出来。&lt;/p&gt;&#10;&lt;h2 id="示例效果"&gt;示例效果&lt;/h2&gt;&#10;&lt;p&gt;&lt;img src="http://pic.maxtral.fun/Onedrive/2024/11/13/6734c05da73f0.png" alt="成功实例"&gt;&lt;/p&gt;&#10;&lt;h2 id="项目地址"&gt;项目地址&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/songquanpeng/stats-cards"&gt;stats-cards GitHub 项目地址&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="使用过程"&gt;使用过程&lt;/h2&gt;&#10;&lt;p&gt;在使用 &lt;code&gt;stats-cards&lt;/code&gt; 的过程中，首先需要在项目的 &lt;code&gt;README.md&lt;/code&gt; 文件中插入特定的卡片语法。这些卡片语法可以帮助我们轻松地将内容呈现为卡片形式。&lt;/p&gt;&#10;&lt;p&gt;例如，以下是一个常见的卡片代码：&lt;/p&gt;&#10;&lt;p&gt;[album]&#10;&lt;img src="http://pic.maxtral.fun/Onedrive/2024/11/13/6734c05da73f0.png" alt="成功实例"&gt;&#10;[/album]&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;lblue&amp;rdquo;]过程：通过这种格式，我们可以快速插入一个小卡片实例，展示一个图像或者其他内容。这个功能非常适合在 &lt;code&gt;README.md&lt;/code&gt; 中展示项目的相关图像或统计信息，使得内容更加生动且直观。[/scode]&lt;/p&gt;&#10;&lt;h2 id="总结"&gt;总结&lt;/h2&gt;&#10;&lt;p&gt;通过 &lt;code&gt;stats-cards&lt;/code&gt; 项目，我们可以为 &lt;code&gt;README.md&lt;/code&gt; 文件增添一种更加灵活且富有表现力的展示方式，不仅提升了文档的视觉效果，也增加了可读性。这对于开源项目、技术博客等场景非常有用。如果你也想尝试这种效果，可以参考上述的示例代码，轻松地将你的 GitHub 项目 README 文件变得更加生动和有趣。&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]结果：使用 &lt;code&gt;stats-cards&lt;/code&gt; 项目后，我成功地在 &lt;code&gt;README.md&lt;/code&gt; 中实现了卡片式展示，提升了文档的可读性和视觉效果。通过插入卡片语法，快速实现了图像和内容的展示。[/scode]&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;red&amp;rdquo;]下一阶段目标：下一步，我计划在项目中进一步扩展使用 &lt;code&gt;stats-cards&lt;/code&gt; 的功能，例如展示更多网站的数据统计，并将其嵌入到项目的其他部分中，提升项目的互动性和视觉效果。[/scode]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="代码展示部分网站数据卡片"&gt;代码展示部分：网站数据卡片&lt;/h3&gt;&#10;&lt;p&gt;明白了！以下是根据你要求的 &lt;code&gt;[scode]&lt;/code&gt; 格式重写的关键代码段：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="bilibili-数据抓取关键代码"&gt;Bilibili 数据抓取关键代码&lt;/h3&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:#ff79c6"&gt;const&lt;/span&gt; axios &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; require(&lt;span style="color:#f1fa8c"&gt;&amp;#39;axios&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; cheerio &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; require(&lt;span style="color:#f1fa8c"&gt;&amp;#39;cheerio&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;async&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;function&lt;/span&gt; getBilibiliInfo(id) {&#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;let&lt;/span&gt; result &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; { name&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;username&amp;#39;&lt;/span&gt;, description&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;&amp;#39;&lt;/span&gt;, following&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, fans&lt;span style="color:#ff79c6"&gt;:&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, level&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;&#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="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:#8be9fd;font-style:italic"&gt;let&lt;/span&gt; [res1, res2] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;await&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;Promise&lt;/span&gt;.all([ &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; axios.get(&lt;span style="color:#f1fa8c"&gt;`https://m.bilibili.com/space/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;id&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;`&lt;/span&gt;), &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; axios.get(&lt;span style="color:#f1fa8c"&gt;`https://api.bilibili.com/x/relation/stat?vmid=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;${&lt;/span&gt;id&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&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:#6272a4"&gt;// 使用 cheerio 解析 HTML 数据&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;let&lt;/span&gt; $ &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; cheerio.load(res1.data);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result.name &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; $(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.base .name&amp;#39;&lt;/span&gt;).text(); &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; result.level &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;parseInt&lt;/span&gt;($(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.base .level i&amp;#39;&lt;/span&gt;).attr(&lt;span style="color:#f1fa8c"&gt;&amp;#39;class&amp;#39;&lt;/span&gt;).slice(&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&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; result.fans &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; res2.data.data.follower;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; result.following &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; res2.data.data.following;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#ff79c6"&gt;catch&lt;/span&gt; (e) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; console.error(e);&#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; result;&#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;[scode type=&amp;ldquo;lblue&amp;rdquo;]过程：这个代码段展示了如何通过 &lt;code&gt;axios&lt;/code&gt; 和 &lt;code&gt;cheerio&lt;/code&gt; 实现对 Bilibili 用户信息的抓取。&lt;code&gt;Promise.all&lt;/code&gt; 实现了并行请求多个 API，&lt;code&gt;cheerio&lt;/code&gt; 用于解析 HTML 结构并提取用户名称和等级信息。[/scode]&lt;/p&gt;</description></item><item><title>唐人瓦和ai故事《老大梦中和胖猫的相遇》</title><link>https://blogtypecho.maxtrnn.top/post/138/</link><pubDate>Thu, 31 Oct 2024 02:08:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/138/</guid><description>&lt;p&gt;以下是你要求的标准文章格式，使用Markdown语法编写：&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="故事概述"&gt;故事概述&lt;/h2&gt;&#10;&lt;h3 id="图1老大科比与直升机"&gt;&lt;strong&gt;图1：老大科比与直升机&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;科比身穿黑色西装，站在一架豪华的私人直升机旁，神情自信，依旧如同在赛场上一样充满斗志。今天，他要前往中国，探索一个神秘的城市——重庆。然而，事情并不如他预想般简单。就在他意气风发地准备登机之际，天边乌云密布，一种不祥的预感悄然浮上心头。科比微微一笑，淡定地登上直升机，向重庆飞去，丝毫不知一场意外正等待着他。&lt;/p&gt;&#10;&lt;h3 id="图2重庆大桥与意外"&gt;&lt;strong&gt;图2：重庆大桥与意外&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;直升机掠过重庆的上空，城市的夜色如梦似幻，壮丽的大桥横跨在江面上，灯火辉煌。然而，不可预见的突发状况发生了，直升机在桥的上空突然失控。科比尽力保持冷静，但引擎的失灵让他束手无策。直升机以一个危险的角度俯冲而下，最终坠入了桥下的江水之中。大桥上的行人惊叫，整个城市似乎都感受到了这场惊天动地的坠落。而科比，就这样消失在了滚滚的江水之中。&lt;/p&gt;&#10;&lt;h3 id="图3猫与汉堡的相遇"&gt;&lt;strong&gt;图3：猫与汉堡的相遇&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;醒来时，科比发现自己不知何时被冲到了江边，他的身旁还蹲着一只悠闲的胖猫，正目不转睛地看着满地散落的汉堡包装。那只胖猫悠闲地舔着饮料，仿佛对眼前的状况毫不关心。科比看着这只猫和地上的食物，意识到自己居然活了下来。他坐起身来，捡起一个汉堡大口咬下，惊奇地发现饥饿竟比恐惧更真实。胖猫咕噜一声，像是在欢迎他的重生。这一刻，科比决定以更轻松的心态面对接下来的奇遇。&lt;/p&gt;&#10;&lt;h3 id="图4麦当劳餐厅的休整"&gt;&lt;strong&gt;图4：麦当劳餐厅的休整&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;科比拖着湿漉漉的身子走进了附近的麦当劳餐厅。他坐在角落，静静地思考着刚刚经历的意外和生死间的那份孤寂。金色的“M”在他眼前闪闪发光，仿佛是对他的重新召唤。吃完汉堡和薯条，科比感觉到体力逐渐恢复。他回想起自己的事业与拼搏，也开始意识到，也许这个意外是一次重新审视生活的契机。带着一丝倦意，他决定在这里稍作休息，准备迎接下一个挑战。&lt;/p&gt;&#10;&lt;h3 id="图5姚明代言的士力架"&gt;&lt;strong&gt;图5：姚明代言的士力架&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;在离开麦当劳的时候，科比在便利店的货架上看到一款士力架，上面赫然印着姚明的形象和标语：“饿了别喊累，来根士力架！”科比不禁会心一笑，想起了他与姚明的篮球情谊。他拿起一根士力架，仿佛看到了昔日赛场上两人拼搏的画面。士力架的巧克力和坚果让他瞬间精力充沛，这款由姚明代言的零食仿佛也为他注入了新的力量。他心中默默感谢姚明，继续踏上他未完成的旅程。&lt;/p&gt;&#10;&lt;h3 id="图6脉动唤醒了科比"&gt;&lt;strong&gt;图6：脉动唤醒了科比&lt;/strong&gt;&lt;/h3&gt;&#10;&lt;p&gt;经过这一连串的奇遇，科比感到疲惫不堪。就在这时，他拿出一瓶脉动饮料，瓶身上印着醒目的字样：“找回状态，脉动回来。”科比一口喝下，清凉的液体让他从内到外焕然一新，仿佛一切疲惫都随之消散。他闭上眼睛，感受到脉动带来的活力与平静。短暂的失踪、意外的经历、好友的“陪伴”，让他更加珍视当下与生命的美好。带着脉动的力量，科比最终走出重庆，踏上归途，带着一次难忘的冒险与全新的生命感悟。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h3 id="图片展示"&gt;图片展示&lt;/h3&gt;&#10;&lt;p&gt;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:07:17.png" alt="2024-10-31T02:07:17.png"&gt;&lt;br&gt;&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:07:35.png" alt="2024-10-31T02:07:35.png"&gt;&lt;br&gt;&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:07:55.png" alt="2024-10-31T02:07:55.png"&gt;&lt;br&gt;&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:08:05.png" alt="2024-10-31T02:08:05.png"&gt;&lt;br&gt;&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:08:24.png" alt="2024-10-31T02:08:24.png"&gt;&lt;br&gt;&#10;&lt;img src="https://bucket.maxtral.fun/typecho/2024/10/31/2024-10-31T02:08:49.png" alt="2024-10-31T02:08:49.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/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>挑战杯成员招聘</title><link>https://blogtypecho.maxtrnn.top/post/80/</link><pubDate>Mon, 14 Oct 2024 04:49:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/80/</guid><description>&lt;h2 id="先看声明-arudiscovertruth"&gt;先看声明！！！ ::aru:discovertruth::&lt;/h2&gt;&#10;&lt;p&gt;[collapse status=&amp;ldquo;true&amp;rdquo; title=&amp;ldquo;首先声明&amp;rdquo;]本团队项目为校园二手交易项目，旨在构造安卓app，微信小程序和qq群的三平台项目。项目后期需要可持续性开发和维护。&lt;em&gt;(本次项目不保证一定获奖或者拿名次，请您请再三考虑)&lt;/em&gt;。其次本项目是在以前项目的基础上进行二次开发，所以无法评估 任务难度 以及不确定性等，感谢您的配合。如果您和本团队成员一样靠热爱来做项目，欢迎您的加入！[/collapse]&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/679068981.png" alt="2024-10-14T06:36:48.png"&gt;&#10;成员要求如下：&lt;/p&gt;&#10;&lt;h2 id="pptword人员"&gt;PPT/Word人员&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;熟练操作PowerPoint，能够制作专业且富有创意的演示文稿，（不只是会用，还是要用的好，用的‘花’）；&lt;/li&gt;&#10;&lt;li&gt;精通Word文档撰写，能够高效完成报告、提案等文字工作；&lt;/li&gt;&#10;&lt;li&gt;具备良好的团队合作精神和沟通能力；&lt;/li&gt;&#10;&lt;li&gt;能够看懂我们项目的基本文档以及成果充分的展示；&lt;/li&gt;&#10;&lt;li&gt;如果您有成品请发送到邮箱：2577870094@qq.com（注意介绍和注明）(最好有作品 ::twemoji:happy:: ）&#10;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;mailto:2577870094@qq.com&amp;rdquo; type=&amp;quot;&amp;quot;]微软outlook一键发送邮件[/button]&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="界面设计技术人员主要寻找"&gt;界面设计技术人员（主要寻找）&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;根据界面原型设计相应的代码，包括但不局限：HTML+css+JavaScript，Android的xml等&lt;/li&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;如果您有成品请发送到邮箱：2577870094@qq.com （注意介绍和注明）&#10;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;mailto:2577870094@qq.com&amp;rdquo; type=&amp;quot;&amp;quot;]微软outlook一键发送邮件[/button]&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="特殊请求"&gt;特殊请求&lt;/h2&gt;&#10;&lt;p&gt;1.交流是免费的哈哈哈哈&#10;2.咨询也是免费的&#10;3.其他职位也可考虑，联系我即可&#10;qq：2577870094&lt;/p&gt;&#10;&lt;h2 id="申请加入地址"&gt;申请加入地址&lt;/h2&gt;&#10;&lt;p&gt;[button color=&amp;ldquo;info&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;http://advertise.maxtral.fun/&amp;rdquo; type=&amp;quot;&amp;quot;]点我去申请[/button]&lt;/p&gt;&#10;&lt;h2 id="项目介绍"&gt;项目介绍&lt;/h2&gt;&#10;&lt;p&gt;具体页面请见：[post cid=&amp;ldquo;79&amp;rdquo; cover=&amp;ldquo;http://www.maxtral.fun/usr/uploads/2024/10/2270681621.png&amp;rdquo;/]&lt;/p&gt;</description></item><item><title>校园淘淘项目</title><link>https://blogtypecho.maxtrnn.top/post/79/</link><pubDate>Mon, 14 Oct 2024 04:46:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/79/</guid><description>&lt;hr&gt;&#10;&lt;p&gt;2024年10月14日12:28:28&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;项目名称：校园淘淘**（暂时拟定）**&#10;项目logo：&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/10/2270681621.png" alt="2024-10-14T04:29:19.png"&gt;&#10;&lt;strong&gt;（暂时设计的）&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;开发背景：&#10;[scode type=&amp;ldquo;green&amp;rdquo;]&#10;您是否经常买一些二手物品？比如咸鱼这种平台。但是小区域，比如一个校园用咸鱼的平台明显过于繁琐。&#10;您是否购买过校园内的二手物品？ 在哪里获取到的信息呢？ 贴吧，qq群，别人宣传。。。。您是否感到有事买不到一些产品，搜索卖家费劲，qq群人数限制等&#10;为此我们选择开发此项目:一个校园的二手交易平台[/scode]&#10;[scode type=&amp;ldquo;lblue&amp;rdquo;]项目介绍：本项目旨在实现安卓app，微信小程序，qq群群聊三个平台的实时校园二手交易平台，满足校园&#10;内的学生的二手交易，达到便捷，靠谱，资源广的产品理念。[/scode]&#10;&lt;em&gt;（2024年10月14日12:36:30待编写）&lt;/em&gt; &lt;br&gt;&#10;[scode type=&amp;ldquo;red&amp;rdquo;]产品功能（预计实现）：单独学校的独立运行，独立的交易平台，适用于不同学校。&#10;学号+实名信息 绑定注册，确保信息真实可靠。&#10;卖家买家信誉系统，以及线上线下的交易方式保证交易的可靠真实。&#10;商品的发布，搜索，分类，评论留言 。&#10;讨论论坛，帖子公告之类。&#10;订单的创建，商家卖家的多平台提醒：QQ，短信，微信，小程序。以及手动拨打号码等&#10;个人信息的展示，隐私信息的保密，安全设置等。&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;上述功能只为大概意思，具体实现以项目进度为准&lt;/em&gt;[/scode]&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;本项目由22级软件工程&amp;ndash;张贺楠发布，若咨询更多信息请联系我：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;[collapse status=&amp;ldquo;ture&amp;rdquo; title=&amp;ldquo;联系max&amp;rdquo;]&#10;qq：2577870094&#10;email：2577870094@qq.com[/collapse]&lt;/p&gt;</description></item><item><title>校园二手交易——校园淘淘</title><link>https://blogtypecho.maxtrnn.top/post/77/</link><pubDate>Sat, 12 Oct 2024 15:11:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/77/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="校园淘淘的由来"&gt;校园淘淘的由来&lt;/h2&gt;&#10;&lt;p&gt;2024年10月12日23:08:40&#10;打算改版原来的社区团购为校园交易平台&#10;实现校园二手交易，名为校园淘淘，同步上线安卓app，微信小程序，qq群的一键发布的三个平台&#10;具体功能仍在构思&amp;hellip;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;2024年10月12日23:11:19&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>Android项目:生活小助理</title><link>https://blogtypecho.maxtrnn.top/post/47/</link><pubDate>Sat, 07 Sep 2024 17:52:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/47/</guid><description>&lt;h2 id="使用手册"&gt;使用手册&lt;/h2&gt;&#10;&lt;p&gt;可以一键式注册账号登录，天气要使用区域编号即可食用，邮件推送要输入开放imap的邮箱地址，邮箱账号和密码(软件不做存储）,最后是qmsg的配置&#10;[button color=&amp;ldquo;info&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://github.com/itmanmax/MAXTR-Plugins&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]自动邮箱插件地址[/button]&#10;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://github.com/itmanmax/MAXTR-Plugins&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]qmsg官方文档[/button]&lt;/p&gt;&#10;&lt;h2 id="须知"&gt;须知&lt;/h2&gt;&#10;&lt;p&gt;请不要恶意注册账号以及频繁使用一些功能&lt;/p&gt;&#10;&lt;h2 id="感谢"&gt;感谢&lt;/h2&gt;&#10;&lt;p&gt;max&lt;/p&gt;</description></item><item><title>高数 and Java</title><link>https://blogtypecho.maxtrnn.top/post/45/</link><pubDate>Tue, 03 Sep 2024 08:15:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/45/</guid><description>&lt;p&gt;这个帖子就记录一下学习吧&lt;/p&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>流量真贵</title><link>https://blogtypecho.maxtrnn.top/post/42/</link><pubDate>Mon, 02 Sep 2024 05:01:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/42/</guid><description>&lt;p&gt;随便看看视频在这个网站或者听听歌，就1￥了&lt;/p&gt;</description></item><item><title>写了一个课表推送，还不支持自己导入</title><link>https://blogtypecho.maxtrnn.top/post/41/</link><pubDate>Sun, 01 Sep 2024 17:17:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/41/</guid><description>&lt;h2 id="需要手动导入自己的课表信息"&gt;需要手动导入自己的课表信息&lt;/h2&gt;&#10;&lt;p&gt;找个定时软件按时户动pY脚本，这个也是 qmsg推送服务，哈哈，可以看的出，我好多都用它了，其是还是方便，Wechat的有限制，所以还是qmsg的好&#10;具体地址：[button color=&amp;ldquo;primary&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://github.com/itmanmax/MAXTR-Plugins&amp;rdquo; type=&amp;quot;&amp;quot;]github链接[/button]&#10;[scode type=&amp;ldquo;green&amp;rdquo;]import datetime&#10;import requests&lt;/p&gt;&#10;&lt;h1 id="qmsg-发送函数"&gt;Qmsg 发送函数&lt;/h1&gt;&#10;&lt;p&gt;def send_qmsg通知(qmsg_key, qq_number, msg):&#10;postdata = {&#10;&amp;lsquo;msg&amp;rsquo;: msg,&#10;&amp;lsquo;qq&amp;rsquo;: qq_number&#10;}&#10;response = requests.post(f&amp;rsquo;&lt;a href="https://qmsg.zendee.cn/send/%7Bqmsg_key%7D'"&gt;https://qmsg.zendee.cn/send/{qmsg_key}'&lt;/a&gt;, data=postdata)&#10;if response.status_code == 200:&#10;print(&amp;ldquo;通知已发送到QQ。&amp;rdquo;)&#10;else:&#10;print(f&amp;quot;通知发送失败，错误码：{response.status_code}，响应内容：{response.text}&amp;quot;)&lt;/p&gt;&#10;&lt;h1 id="课程表和时间段信息"&gt;课程表和时间段信息&lt;/h1&gt;&#10;&lt;p&gt;course_schedule = {&#10;1: [(&amp;ldquo;编译原理&amp;rdquo;, &amp;ldquo;第一节&lt;del&gt;第二节&amp;rdquo;, &amp;ldquo;3号楼2030202&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;编译原理实验&amp;rdquo;, &amp;ldquo;第三节&lt;del&gt;第四节&amp;rdquo;, &amp;ldquo;6号楼2060302&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;人工智能&amp;rdquo;, &amp;ldquo;第六节&lt;del&gt;第八节&amp;rdquo;, &amp;ldquo;3号楼2030202&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;15周&amp;rdquo;),&#10;(&amp;ldquo;人工智能&amp;rdquo;, &amp;ldquo;第九节&lt;del&gt;第十节&amp;rdquo;, &amp;ldquo;6号楼2060302&amp;rdquo;, &amp;ldquo;4&lt;/del&gt;12周&amp;rdquo;)],&#10;2: [(&amp;ldquo;软件设计与体系结构实验&amp;rdquo;, &amp;ldquo;第九节&lt;del&gt;第十节&amp;rdquo;, &amp;ldquo;6号楼2060302&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;软件设计与体系结构&amp;rdquo;, &amp;ldquo;第六节&lt;del&gt;第八节&amp;rdquo;, &amp;ldquo;3号楼2030202&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;软件需求分析与建模&amp;rdquo;, &amp;ldquo;第三节&lt;del&gt;第五节&amp;rdquo;, &amp;ldquo;3号楼2030202,6号楼2060302&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;)],&#10;3: [(&amp;ldquo;计算机网络&amp;rdquo;, &amp;ldquo;第三节&lt;del&gt;第四节&amp;rdquo;, &amp;ldquo;3号楼2030203&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;软件应用开发实践&amp;rdquo;, &amp;ldquo;第一节&lt;del&gt;第二节&amp;rdquo;, &amp;ldquo;6号楼2060302&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;)],&#10;4: [(&amp;ldquo;音乐鉴赏&amp;rdquo;, &amp;ldquo;第九节&lt;del&gt;第十节&amp;rdquo;, &amp;ldquo;1号楼2010404&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;9周&amp;rdquo;),&#10;(&amp;ldquo;经济学原理&amp;rdquo;, &amp;ldquo;第六节&lt;del&gt;第七节&amp;rdquo;, &amp;ldquo;1号楼2010501&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;计算机网络实验&amp;rdquo;, &amp;ldquo;第三节&lt;del&gt;第四节&amp;rdquo;, &amp;ldquo;6号楼2060201&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;计算机网络&amp;rdquo;, &amp;ldquo;第一节&lt;del&gt;第二节&amp;rdquo;, &amp;ldquo;3号楼2030203&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;)],&#10;5: [(&amp;ldquo;人机界面设计&amp;rdquo;, &amp;ldquo;第三节&lt;del&gt;第五节&amp;rdquo;, &amp;ldquo;2号楼2020103,6号楼2060101&amp;rdquo;, &amp;ldquo;1&lt;/del&gt;18周&amp;rdquo;),&#10;(&amp;ldquo;大学生职业生涯规划与就业指导（III）&amp;rdquo;, &amp;ldquo;第一节&lt;del&gt;第二节&amp;rdquo;, &amp;ldquo;1号楼2010506&amp;rdquo;, &amp;ldquo;10&lt;/del&gt;18周&amp;rdquo;)],&#10;6: [], # 周六无课程&#10;7: [] # 周日无课程&#10;}&lt;/p&gt;</description></item><item><title>cs2官匹被手撕，望周知</title><link>https://blogtypecho.maxtrnn.top/post/32/</link><pubDate>Sun, 01 Sep 2024 09:37:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/32/</guid><description>&lt;h2 id="还是不建议观看视频了太耗我流量了等过阵传b战去"&gt;还是不建议观看视频了，太耗我流量了，等过阵传B战去&lt;/h2&gt;&#10;&lt;p&gt;&lt;video controls preload="metadata" src="https://blogtypecho.maxtrnn.top/uploads/2024/09/1835125616.mp4" style="max-width:100%;border-radius:6px"&gt;&lt;/video&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;video controls preload="metadata" src="https://blogtypecho.maxtrnn.top/uploads/2024/09/2912051751.mp4" style="max-width:100%;border-radius:6px"&gt;&lt;/video&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>Android项目1--聚合社交盒子</title><link>https://blogtypecho.maxtrnn.top/post/27/</link><pubDate>Fri, 30 Aug 2024 00:23:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/27/</guid><description>&lt;p&gt;###目前v1.0正式版###&lt;/p&gt;&#10;&lt;p&gt;###操作手册暂时未推出###&#10;[button color=&amp;ldquo;success&amp;rdquo; icon=&amp;quot;&amp;quot; url=&amp;ldquo;https://gitee.com/wudimax/android-life-assistant&amp;rdquo; type=&amp;ldquo;round&amp;rdquo;]gitee下载链接[/button]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2024年8月30日171222"&gt;2024年8月30日17:12:22&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]结果：完成第一个小功能，目前服务器连接正常，可以在线聊天，正常打开页面，流程运行[/scode]&#10;[scode type=&amp;ldquo;lblue&amp;rdquo;]过程：网上的XX教程，弄半天接故事Rds数据库的服务器的源码，我弄半天，改到半夜4点！因为第二天就要交作业，无语&amp;hellip;. 自己和gpt结合写的剩余页面，除了聊天功能，还是比较繁琐的，弄了好长时间[/scode]&#10;[scode type=&amp;ldquo;red&amp;rdquo;]下一阶段目标：更多的功能，比如前几天写的自动qq通知新邮件之类（目前没单独写这篇文章），web api调用接口（目前还是本地ssh）等[/scode]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2024年8月31日205317"&gt;2024年8月31日20:53:17&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]结果：完成两个个小功能，可以检查新邮件推送至QQ，输入城市天气编号查询天气，正常打开页面，流程运行[/scode]&#10;[scode type=&amp;ldquo;lblue&amp;rdquo;]过程：还是比较费劲的，因为gpt也不完全智能，嘻嘻，报错什么的多的是，离谱的是我的垃圾电脑卡死机好多次，无语，这个软件太迟cpu了[/scode]&#10;[scode type=&amp;ldquo;red&amp;rdquo;]下一阶段目标：web api调用接口（目前还是本地ssh，我是真的想改）等，更多有用的功能[/scode]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2024年9月8日011458"&gt;2024年9月8日01:14:58&lt;/h2&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;green&amp;rdquo;]结果：完成诸多功能，健康查询和健康tips，日程管理，注册账号，实现api调取数据，正常打开页面，流程运行[/scode]&#10;[scode type=&amp;ldquo;lblue&amp;rdquo;]过程：写了一周，来回删改调试，也是不得了，我的安卓手机还是平板，耽误不少时间[/scode]&#10;[scode type=&amp;ldquo;red&amp;rdquo;]下一阶段目标：改ui，限制手机号注册，更多有用的功能[/scode]&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;请输入代码&#10;&lt;/code&gt;&lt;/pre&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><item><title>真的困</title><link>https://blogtypecho.maxtrnn.top/post/22/</link><pubDate>Thu, 29 Aug 2024 00:49:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/22/</guid><description>&lt;p&gt;晚上不睡，早上不起&lt;/p&gt;&#10;&lt;p&gt;[scode type=&amp;ldquo;yellow&amp;rdquo;]#include&amp;lt;stdio.h&amp;gt;&#10;void main(){&#10;printf(&amp;ldquo;hallo&amp;rdquo;);&#10;}[/scode]&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;用于测试自动生成标签的插件可用性，上面的代码看看也能看懂&#10;#include&amp;lt;stdio.h&amp;gt;&#10;void main(){&#10;printf(&amp;ldquo;hallo&amp;rdquo;);&#10;}&lt;/p&gt;</description></item><item><title>花里胡哨弄半天</title><link>https://blogtypecho.maxtrnn.top/post/17/</link><pubDate>Wed, 28 Aug 2024 09:25:48 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/17/</guid><description>&lt;p&gt;网页目前一个非常花里胡哨了，嘻嘻，也是访问不少别人的博客&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/08/399745494.jpg" alt="50EBD2921F595988CDF364A34614E9EE.jpg"&gt;&lt;/p&gt;</description></item><item><title>忙碌一一天</title><link>https://blogtypecho.maxtrnn.top/post/12/</link><pubDate>Tue, 27 Aug 2024 12:26:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/12/</guid><description>&lt;p&gt;删删改改，终于网站凑合这可以看了&#10;&lt;img src="https://blogtypecho.maxtrnn.top/uploads/2024/08/2788339684.png" alt="下载的一部分压缩包"&gt;&lt;/p&gt;</description></item><item><title>困死哥了，c</title><link>https://blogtypecho.maxtrnn.top/post/9/</link><pubDate>Mon, 26 Aug 2024 23:55:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/9/</guid><description>&lt;p&gt;真困&lt;img src="https://img.keaitupian.cn/newupload/11/1669620018757612.jpg" alt="困"&gt;&lt;/p&gt;</description></item><item><title>吃了一个泡面辣死我了</title><link>https://blogtypecho.maxtrnn.top/post/8/</link><pubDate>Mon, 26 Aug 2024 16:55:11 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/8/</guid><description>&lt;p&gt;曹，早知道不吃了，真辣，还增肥&lt;img src="https://s21.ax1x.com/2024/08/27/pAkt2HH.jpg" alt="辣"&gt;&lt;/p&gt;</description></item><item><title>终于上荣耀了</title><link>https://blogtypecho.maxtrnn.top/post/7/</link><pubDate>Mon, 26 Aug 2024 16:33:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/7/</guid><description>&lt;p&gt;&lt;img src="https://s21.ax1x.com/2024/08/27/pAkt83V.jpg" alt="荣耀"&gt;&lt;/p&gt;</description></item><item><title>关于这个网站</title><link>https://blogtypecho.maxtrnn.top/post/4/</link><pubDate>Mon, 26 Aug 2024 13:16:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/4/</guid><description>&lt;p&gt;欢迎来到 MaxBlog。&lt;/p&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;Obsidian、Typecho 与图床工作流&lt;/li&gt;&#10;&lt;li&gt;偶尔更新的生活随笔&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;项目入口、文章归档、留言本和时光机都可以在左侧导航的“更多”中找到。&lt;/p&gt;&#10;&lt;p&gt;希望这里不只是旧内容的仓库，也能持续留下新的东西。&lt;/p&gt;</description></item></channel></rss>