<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>实用工具 on MaxBlog</title><link>https://blogtypecho.maxtrnn.top/tags/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/</link><description>Recent content in 实用工具 on MaxBlog</description><generator>Hugo</generator><language>zh-cn</language><copyright>&lt;a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener"&gt;皖ICP备2024056272号-3&lt;/a&gt;</copyright><lastBuildDate>Thu, 24 Sep 2026 07:39:59 +0000</lastBuildDate><atom:link href="https://blogtypecho.maxtrnn.top/tags/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>Obsidian 图床与博客发布流程说明</title><link>https://blogtypecho.maxtrnn.top/post/obsidian-publish-workflow-note/</link><pubDate>Thu, 11 Jun 2026 10:03:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/obsidian-publish-workflow-note/</guid><description>&lt;p&gt;这篇笔记用来记录这次从 Obsidian 到博客的完整发布链路，方便后面继续扩展成日常可复用的内容工作流。&lt;/p&gt;&#10;&lt;h2 id="这次做成了什么"&gt;这次做成了什么&lt;/h2&gt;&#10;&lt;p&gt;这次已经把下面几段链路串起来了：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;在 Obsidian 里编写 Markdown 笔记&lt;/li&gt;&#10;&lt;li&gt;自动识别笔记里的本地图片&lt;/li&gt;&#10;&lt;li&gt;上传图片到 &lt;code&gt;img.maxnn.top&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;生成一份可直接发布的 &lt;code&gt;.published.md&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;通过本地插件把文章推送到 Typecho&lt;/li&gt;&#10;&lt;li&gt;回写文章的 &lt;code&gt;blog_cid&lt;/code&gt;、&lt;code&gt;blog_url&lt;/code&gt; 和发布时间&#10;&lt;img src="https://img.maxnn.top/file/1781191747967_obsidian-typecho-workflow-cover.png" alt=""&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="目前的使用方式"&gt;目前的使用方式&lt;/h2&gt;&#10;&lt;p&gt;在 Obsidian 里，现在可以直接使用两个命令：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;生成博客发布稿&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;发布当前笔记到 Typecho&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;第一个命令适合先检查图片替换和正文内容，第二个命令适合直接把当前笔记推送到博客。&lt;/p&gt;&#10;&lt;h2 id="这套流程为什么顺手"&gt;这套流程为什么顺手&lt;/h2&gt;&#10;&lt;p&gt;这次没有继续硬走 Typecho 后台网页登录提交流程，而是改成了更稳定的桥接方式：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Obsidian 负责本地编辑和命令触发&lt;/li&gt;&#10;&lt;li&gt;图床负责承接本地图片&lt;/li&gt;&#10;&lt;li&gt;Typecho 侧提供专用发布入口&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这样做的好处是，后面无论是继续扩展批量发布、草稿更新，还是接 API / MCP，都更容易一点。&lt;/p&gt;&#10;&lt;h2 id="这次测试里验证过的点"&gt;这次测试里验证过的点&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;图床上传已经可用&lt;/li&gt;&#10;&lt;li&gt;本地图片可以被替换成线上地址&lt;/li&gt;&#10;&lt;li&gt;Typecho 可以新增文章&lt;/li&gt;&#10;&lt;li&gt;Typecho 可以更新已有文章&lt;/li&gt;&#10;&lt;li&gt;前台页面可以看到更新后的内容&lt;/li&gt;&#10;&lt;li&gt;文章发布后，Obsidian 侧可以保存文章关联信息&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="下一步可以继续补的内容"&gt;下一步可以继续补的内容&lt;/h2&gt;&#10;&lt;p&gt;后面比较值得继续做的方向有这些：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;自动读取更多 frontmatter 字段&lt;/li&gt;&#10;&lt;li&gt;支持分类和标签的更细分映射&lt;/li&gt;&#10;&lt;li&gt;增加一键发布并同步到 Notion 的链路&lt;/li&gt;&#10;&lt;li&gt;把视频资源接到独立存储方案&lt;/li&gt;&#10;&lt;li&gt;做一个更完整的发布面板，而不只是命令入口&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="这篇笔记的用途"&gt;这篇笔记的用途&lt;/h2&gt;&#10;&lt;p&gt;这篇文章本身也可以继续当测试稿使用。后面如果要继续验证：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;新图片上传&lt;/li&gt;&#10;&lt;li&gt;frontmatter 字段解析&lt;/li&gt;&#10;&lt;li&gt;发布后回写&lt;/li&gt;&#10;&lt;li&gt;文章更新覆盖&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;都可以直接基于这篇继续改，不用重新搭环境。&lt;/p&gt;</description></item><item><title>图书馆自动预约</title><link>https://blogtypecho.maxtrnn.top/post/ahnu-library-automatic-appointment-zcvsv3/</link><pubDate>Fri, 03 Jan 2025 05:47:00 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/ahnu-library-automatic-appointment-zcvsv3/</guid><description>&lt;h1 id="图书馆自动预约"&gt;图书馆自动预约&lt;/h1&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;2024年 结束了 2025 我们一定会过的更好的&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;max的驱动力是懒，使用懒得争分夺秒的去抢图书馆的座位，但是为什么还是约不到呢？&lt;/p&gt;&#10;&lt;p&gt;为了更大化展现计算机人的能力，上脚本！&lt;/p&gt;&#10;&lt;p&gt;但是我又不会爬虫怎么办呢？&lt;/p&gt;&#10;&lt;p&gt;去github看一看&lt;/p&gt;&#10;&lt;p&gt;根据已知信息 前图书馆预约项目的“负责人” 告诉我这个是超星学习通的图书馆预约框架&lt;/p&gt;&#10;&lt;p&gt;so 搜索超星图书馆预约 学习通图书馆&lt;/p&gt;&#10;&lt;p&gt;得到结论：&lt;a href="https://github.com/bear-zd/ChaoXingReserveSeat"&gt;https://github.com/bear-zd/ChaoXingReserveSeat&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;前去下载观察：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; json&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; time&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; argparse&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; os&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; logging&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;basicConfig(level&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INFO, &lt;span style="color:#8be9fd;font-style:italic"&gt;format&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(asctime)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(levelname)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(message)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; utils &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; reserve, get_user_credentials&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get_current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;lambda&lt;/span&gt; action: time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%H:%M:%S&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time() &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3600&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%H:%M:%S&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time()))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;get_current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;lambda&lt;/span&gt; action: time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time() &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;8&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;*&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;3600&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strftime(&lt;span style="color:#f1fa8c"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt;, time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;localtime(time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;time()))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SLEEPTIME &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0.2&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 每次抢座的间隔&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENDTIME &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;07:01:00&amp;#34;&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 根据学校的预约座位时间+1min即可&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENABLE_SLIDER &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 是否有滑块验证&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MAX_ATTEMPT &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 最大尝试次数&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RESERVE_NEXT_DAY &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt; &lt;span style="color:#6272a4"&gt;# 预约明天而不是今天的&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;login_and_reserve&lt;/span&gt;(users, usernames, passwords, action, success_list&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Global settings: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;SLEEPTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;SLEEPTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENDTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENDTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENABLE_SLIDER: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENABLE_SLIDER&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;RESERVE_NEXT_DAY: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;RESERVE_NEXT_DAY&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;)) &lt;span style="color:#ff79c6"&gt;!=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt; Exception(&lt;span style="color:#f1fa8c"&gt;&amp;#34;user number should match the number of config&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; success_list &lt;span style="color:#ff79c6"&gt;is&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;*&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(users)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; index, user &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password, times, roomid, seatid, daysofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; user&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;values()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index], passwords&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt;(current_dayofweek &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; daysofweek):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Today not set to reserve&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; success_list[index]: &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;username&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;seatid&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; try -----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER, reserve_next_day&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;RESERVE_NEXT_DAY)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username, password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;submit(times, roomid, seatid, action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list[index] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; suc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; success_list&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;(users, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_time(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;start time &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;current_time&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, action &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;on&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; attempt_times &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;, &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_user_credentials(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;None&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; today_reservation_num &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;sum&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; d &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; users &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; d&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;daysofweek&amp;#39;&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;while&lt;/span&gt; current_time &lt;span style="color:#ff79c6"&gt;&amp;lt;&lt;/span&gt; ENDTIME:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; attempt_times &lt;span style="color:#ff79c6"&gt;+=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# try:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; success_list &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; login_and_reserve(users, usernames, passwords, action, success_list)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# except Exception as e:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# print(f&amp;#34;An error occurred: {e}&amp;#34;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;attempt time &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;attempt_times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, time now &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;current_time&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;, success list &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;success_list&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_time &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_time(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;sum&lt;/span&gt;(success_list) &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; today_reservation_num:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;print&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserved successfully!&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;debug&lt;/span&gt;(users, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;Global settings: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;SLEEPTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;SLEEPTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENDTIME: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENDTIME&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;ENABLE_SLIDER: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;ENABLE_SLIDER&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;\n&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;RESERVE_NEXT_DAY: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;RESERVE_NEXT_DAY&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34; Debug Mode start! , action &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;on&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;off&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usernames, passwords &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_user_credentials(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; current_dayofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_current_dayofweek(action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; index, user &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(users):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username, password, times, roomid, seatid, daysofweek &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; user&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;values()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;type&lt;/span&gt;(seatid) &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seatid &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [seatid]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; action:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username ,password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; usernames&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index], passwords&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;,&amp;#39;&lt;/span&gt;)[index]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt;(current_dayofweek &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; daysofweek):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;&amp;#34;Today not set to reserve&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;info(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;----------- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;username&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;times&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; -- &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;seatid&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; try -----------&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username, password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; suc &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;submit(times, roomid, seatid, action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; suc:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_roomid&lt;/span&gt;(args1, args2):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; username &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入用户名：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; password &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入密码：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; reserve(sleep_time&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;SLEEPTIME, max_attempt&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;MAX_ATTEMPT, enable_slider&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;ENABLE_SLIDER, reserve_next_day&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;RESERVE_NEXT_DAY)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_login_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;login(username&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;username, password&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;password)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;headers&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update({&lt;span style="color:#f1fa8c"&gt;&amp;#39;Host&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;office.chaoxing.com&amp;#39;&lt;/span&gt;})&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; encode &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;input&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入deptldEnc：&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;roomid(encode)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;dirname(&lt;span style="color:#8be9fd;font-style:italic"&gt;__file__&lt;/span&gt;), &lt;span style="color:#f1fa8c"&gt;&amp;#39;config.json&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; argparse&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ArgumentParser(prog&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Chao Xing seat auto reserve&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-u&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--user&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;config_path, help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;user config file&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-m&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--method&amp;#39;&lt;/span&gt;, default&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt; ,choices&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;[&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;room&amp;#34;&lt;/span&gt;], help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;for debug&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#f1fa8c"&gt;&amp;#39;-a&amp;#39;&lt;/span&gt;,&lt;span style="color:#f1fa8c"&gt;&amp;#39;--action&amp;#39;&lt;/span&gt;, action&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;store_true&amp;#34;&lt;/span&gt;,help&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;use --action to enable in github action&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; args &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; parser&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;parse_args()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func_dict &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;: main, &lt;span style="color:#f1fa8c"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;:debug, &lt;span style="color:#f1fa8c"&gt;&amp;#34;room&amp;#34;&lt;/span&gt;: get_roomid}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;user, &lt;span style="color:#f1fa8c"&gt;&amp;#34;r+&amp;#34;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; data:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; usersdata &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; json&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;load(data)[&lt;span style="color:#f1fa8c"&gt;&amp;#34;reserve&amp;#34;&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; func_dict[args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;method](usersdata, args&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;action)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="自动预约座位的-python-脚本解析"&gt;自动预约座位的 Python 脚本解析&lt;/h3&gt;&#10;&lt;p&gt;此文档旨在详细介绍一个用于自动预约座位的 Python 脚本。该脚本的核心功能是登录用户，按照设定的时间预约座位，并提供了一些调试和错误处理的功能。&lt;/p&gt;</description></item><item><title>批量爬取图片-视觉中国</title><link>https://blogtypecho.maxtrnn.top/post/batch-crawling-picturevisual-china-1b7t31/</link><pubDate>Tue, 03 Dec 2024 16:23:06 +0800</pubDate><guid>https://blogtypecho.maxtrnn.top/post/batch-crawling-picturevisual-china-1b7t31/</guid><description>&lt;h1 id="批量爬取图片-视觉中国"&gt;批量爬取图片-视觉中国&lt;/h1&gt;&#10;&lt;p&gt;2024年12月4日00:20:52带编写&lt;/p&gt;&#10;&lt;h1 id="使用教程"&gt;使用教程&lt;/h1&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;去github下载 &lt;a href="https://github.com/itmanmax/getvgcg-picture"&gt;https://github.com/itmanmax/getvgcg-picture&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;双击bat启动&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204081938.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;功能介绍：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;输入搜索的关键词&lt;/li&gt;&#10;&lt;li&gt;下载图片数量&lt;/li&gt;&#10;&lt;li&gt;爬取的方式&lt;/li&gt;&#10;&lt;li&gt;是否统一命名 ：格式为foods1.jpg foods2.jpg 这种&lt;/li&gt;&#10;&lt;li&gt;以及保存位置&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082138.png" alt="image"&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082154.png" alt="image"&gt;&lt;img src="https://picbed-max.oss-cn-wulanchabu.aliyuncs.com/siyuannote/20241204082201.png" alt="image"&gt;&lt;/p&gt;&#10;&lt;p&gt;使用如从简单！&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;声明：仅供娱乐使用，请勿商业使用！&lt;/strong&gt;&lt;/p&gt;&#10;&lt;h1 id="源码介绍"&gt;源码介绍&lt;/h1&gt;&#10;&lt;h2 id="代码分享"&gt;代码分享&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; os&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; time&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; requests&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; bs4 &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; BeautifulSoup&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; random&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; tk&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; ttk, messagebox&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; logging&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; datetime &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; datetime&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;class&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;ImageDownloaderGUI&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;__init__&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, root):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; root&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#34;图片下载器&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;geometry(&lt;span style="color:#f1fa8c"&gt;&amp;#34;600x650&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置整体样式&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Style()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TLabel&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TButton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TRadiobutton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; style&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;configure(&lt;span style="color:#f1fa8c"&gt;&amp;#39;TCheckbutton&amp;#39;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建主框架&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(root, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;20&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BOTH, expand&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 搜索关键词区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; search_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;搜索设置&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; search_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(search_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;搜索关键词:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(search_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;40&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;Restaurant&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(search_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载数量:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(search_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;40&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 下载模式区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mode_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载模式&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mode_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;StringVar(value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;随机下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;随机&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Radiobutton(mode_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃下载&amp;#34;&lt;/span&gt;, variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode, value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;2&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 跳跃设置区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(mode_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(jump_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃距离:&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(jump_frame, width&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;, padx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;2&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 命名选项区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;命名选项&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BooleanVar(value&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_check &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Checkbutton(&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name_frame,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;统一命名（例：关键词1.jpg, 关键词2.jpg）&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; variable&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_check&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 保存路径区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;LabelFrame(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;保存位置&amp;#34;&lt;/span&gt;, padding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;10&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_input_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(path_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path_input_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Entry(path_input_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;left&amp;#39;&lt;/span&gt;, fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, expand&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;, padx&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;r&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;C:\Users\86147\图片\pypicture&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_btn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Button(path_input_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;浏览&amp;#34;&lt;/span&gt;, command&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;browse_btn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;right&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 下载按钮区域&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; btn_frame &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Frame(main_frame)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; btn_frame&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X, pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;20&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_btn &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Button(btn_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;开始下载&amp;#34;&lt;/span&gt;, command&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;start_download, style&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Accent.TButton&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_btn&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;5&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 进度显示&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(main_frame, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;, font&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;(&lt;span style="color:#f1fa8c"&gt;&amp;#39;微软雅黑&amp;#39;&lt;/span&gt;, &lt;span style="color:#bd93f9"&gt;9&lt;/span&gt;))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 添加状态栏&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(root, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;就绪&amp;#34;&lt;/span&gt;, relief&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;SUNKEN, anchor&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;w&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(side&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;BOTTOM, fill&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;X)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setup_logging()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;setup_logging&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 配置日志&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;getLogger(&lt;span style="color:#f1fa8c"&gt;&amp;#39;ImageDownloader&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setLevel(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;INFO)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建文件处理器&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;FileHandler(&lt;span style="color:#f1fa8c"&gt;&amp;#39;error.txt&amp;#39;&lt;/span&gt;, encoding&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;utf-8&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setLevel(logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;ERROR)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置日志格式&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; formatter &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Formatter(&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(asctime)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(levelname)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; - &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;%(message)s&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; fh&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;setFormatter(formatter)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;addHandler(fh)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;browse_path&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;from&lt;/span&gt; tkinter &lt;span style="color:#ff79c6"&gt;import&lt;/span&gt; filedialog&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; filedialog&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;askdirectory()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; path:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;delete(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;END)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;insert(&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;, path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;start_download&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keyword &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;search_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; count &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;count_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入有效的下载数量！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; keyword:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入搜索关键词！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; save_path:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请选择保存路径！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建以关键词命名的子文件夹&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; keyword_folder &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(save_path, keyword)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;exists(keyword_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;makedirs(keyword_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;开始下载...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_images(keyword, count, keyword_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showinfo(&lt;span style="color:#f1fa8c"&gt;&amp;#34;完成&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;成功下载了 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;count&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; 张图片到文件夹 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword_folder&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载完成&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载过程中出现错误：&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载出错&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;finally&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;download_images&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, keyword, count, save_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; base_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;https://www.vcg.com/creative-image/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新状态&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;progress_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在获取图片列表...&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; soup &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; make_soup(base_url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; all_img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; get_image_urls(soup)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; all_img_urls:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt; Exception(&lt;span style="color:#f1fa8c"&gt;&amp;#34;未找到任何图片&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 根据下载模式选择图片&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;顺序&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; all_img_urls[:count]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;随机&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; random&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sample(all_img_urls, &lt;span style="color:#8be9fd;font-style:italic"&gt;min&lt;/span&gt;(count, &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(all_img_urls)))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;download_mode&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get() &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#34;跳跃&amp;#34;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; jump_distance &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;jump_entry&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;strip())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; messagebox&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;showerror(&lt;span style="color:#f1fa8c"&gt;&amp;#34;错误&amp;#34;&lt;/span&gt;, &lt;span style="color:#f1fa8c"&gt;&amp;#34;请输入有效的跳跃距离！&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; all_img_urls[::jump_distance][:count]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 确定起始编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; start_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get_start_index(keyword, save_folder)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 创建进度条&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Toplevel(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;title(&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载进度&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;geometry(&lt;span style="color:#f1fa8c"&gt;&amp;#34;300x150&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;transient(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root) &lt;span style="color:#6272a4"&gt;# 设置为主窗口的子窗口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(progress_window, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载...&amp;#34;&lt;/span&gt;)&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Progressbar(progress_window, length&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;200&lt;/span&gt;, mode&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;determinate&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ttk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Label(progress_window, text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;pack(pady&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 设置进度条最大值&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar[&lt;span style="color:#f1fa8c"&gt;&amp;#39;maximum&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; i, img_url &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;enumerate&lt;/span&gt;(img_urls, start&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新进度显示&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_text&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载第 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;i&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt; 张图片&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_bar[&lt;span style="color:#f1fa8c"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;] &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; i&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;status_label&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;config(text&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;正在下载: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;i&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;/&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(img_urls)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 更新界面&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;update_idletasks()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;rename_var&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; filename &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;keyword&lt;span style="color:#f1fa8c"&gt;}{&lt;/span&gt;start_index &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;-&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;.jpg&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;else&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; filename &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;)[&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;]&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;split(&lt;span style="color:#f1fa8c"&gt;&amp;#39;?&amp;#39;&lt;/span&gt;)[&lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; save_path &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;path&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;join(save_folder, filename)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; download_image(img_url, save_path)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载失败 &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;img_url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 控制更新频率，避免界面卡顿&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; i &lt;span style="color:#ff79c6"&gt;%&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;2&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;: &lt;span style="color:#6272a4"&gt;# 每下载两张图片更新一次界面&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; time&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;sleep(&lt;span style="color:#bd93f9"&gt;0.1&lt;/span&gt;) &lt;span style="color:#6272a4"&gt;# 短暂延时，让界面有机会响应&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 关闭进度窗口&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; progress_window&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;destroy()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="font-style:italic"&gt;self&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;logger&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;下载过程出错: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_start_index&lt;/span&gt;(&lt;span style="font-style:italic"&gt;self&lt;/span&gt;, keyword, save_folder):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#6272a4"&gt;# 获取文件夹中已有的最大编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; existing_files &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; [f &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; f &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; os&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;listdir(save_folder) &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; f&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(keyword) &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; f&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpg&amp;#39;&lt;/span&gt;)]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;0&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; file &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; existing_files:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;int&lt;/span&gt;(file[&lt;span style="color:#8be9fd;font-style:italic"&gt;len&lt;/span&gt;(keyword):&lt;span style="color:#ff79c6"&gt;-&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;4&lt;/span&gt;]) &lt;span style="color:#6272a4"&gt;# 提取编号&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; index &lt;span style="color:#ff79c6"&gt;&amp;gt;&lt;/span&gt; max_index:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; max_index &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; index&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; ValueError:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; max_index &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; &lt;span style="color:#bd93f9"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;make_soup&lt;/span&gt;(url):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;User-Agent&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(url, headers&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;headers)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;raise_for_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; BeautifulSoup(response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;text, &lt;span style="color:#f1fa8c"&gt;&amp;#39;html.parser&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Error making soup for &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;raise&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;get_image_urls&lt;/span&gt;(soup):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; []&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; img_tag &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; soup&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;find_all(&lt;span style="color:#f1fa8c"&gt;&amp;#39;img&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; img_tag&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;data-src&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;or&lt;/span&gt; img_tag&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(&lt;span style="color:#f1fa8c"&gt;&amp;#39;src&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; img_url:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;lower()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpg&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;and&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;not&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;lower()&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;endswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;.jpeg&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;continue&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;//&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;https:&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_url&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;elif&lt;/span&gt; img_url&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;startswith(&lt;span style="color:#f1fa8c"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_url &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;https://www.vcg.com&amp;#39;&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;+&lt;/span&gt; img_url&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;debug(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Found image URL: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;img_url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; img_urls&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;append(img_url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; img_urls&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;download_image&lt;/span&gt;(url, save_path):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;try&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; headers &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;User-Agent&amp;#39;&lt;/span&gt;: &lt;span style="color:#f1fa8c"&gt;&amp;#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; requests&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;get(url, headers&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;headers, stream&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; response:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;raise_for_status()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;with&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;open&lt;/span&gt;(save_path, &lt;span style="color:#f1fa8c"&gt;&amp;#39;wb&amp;#39;&lt;/span&gt;) &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; file:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;for&lt;/span&gt; chunk &lt;span style="color:#ff79c6"&gt;in&lt;/span&gt; response&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;iter_content(chunk_size&lt;span style="color:#ff79c6"&gt;=&lt;/span&gt;&lt;span style="color:#bd93f9"&gt;8192&lt;/span&gt;):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; chunk:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; file&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;write(chunk)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;True&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;except&lt;/span&gt; Exception &lt;span style="color:#ff79c6"&gt;as&lt;/span&gt; e:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;error(&lt;span style="color:#f1fa8c"&gt;f&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;Error downloading &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;url&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;: &lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;{&lt;/span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;str&lt;/span&gt;(e)&lt;span style="color:#f1fa8c"&gt;}&lt;/span&gt;&lt;span style="color:#f1fa8c"&gt;&amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff79c6"&gt;return&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;False&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;def&lt;/span&gt; &lt;span style="color:#50fa7b"&gt;main&lt;/span&gt;():&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; root &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; tk&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;Tk()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; app &lt;span style="color:#ff79c6"&gt;=&lt;/span&gt; ImageDownloaderGUI(root)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; root&lt;span style="color:#ff79c6"&gt;.&lt;/span&gt;mainloop()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;if&lt;/span&gt; &lt;span style="color:#8be9fd;font-style:italic"&gt;__name__&lt;/span&gt; &lt;span style="color:#ff79c6"&gt;==&lt;/span&gt; &lt;span style="color:#f1fa8c"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main()&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="图片下载器-gui-详解"&gt;图片下载器 GUI 详解&lt;/h3&gt;&#10;&lt;h4 id="1-项目概述"&gt;1. 项目概述&lt;/h4&gt;&#10;&lt;p&gt;本项目实现了一个简单的图片下载器 GUI，用户可以通过输入关键词和下载模式来下载对应的图片。以下是程序的主要功能与实现细节。&lt;/p&gt;</description></item><item><title>MAX-图床-1-使用教程</title><link>https://blogtypecho.maxtrnn.top/post/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></channel></rss>