<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>小枫叶</title><description>记录生活、学习与折腾</description><link>https://www.smallmaple.com</link><language>en</language><item><title>使用 Docker 部署 Bilibili 媒体解析 Telegram 机器人</title><link>https://www.smallmaple.com/en/post/e4-bd-bf-e7-94-a8-docker--e9-83-a8-e7-bd-b2-bilibili--e5-aa-92-e4-bd-93-e8-a7-a3-e6-9e-90-</link><guid isPermaLink="false">en:e4-bd-bf-e7-94-a8-docker--e9-83-a8-e7-bd-b2-bilibili--e5-aa-92-e4-bd-93-e8-a7-a3-e6-9e-90-</guid><description>
在 Telegram 中，由于官方 API 的限制，上传大视频（超过 50MB）往往是个头疼的问题。大佬的Telegram-Bili-Feed-Helper 项目通过部署本地 Bot API 服务器，完美解决了大视频解析和发送的问题，同时支持 B</description><pubDate>Sun, 22 Mar 2026 13:52:56 GMT</pubDate><content:encoded>
&lt;p&gt;在 Telegram 中，由于官方 API 的限制，上传大视频（超过 50MB）往往是个头疼的问题。大佬的&lt;strong&gt;&lt;a href=&quot;https://github.com/simonsmh/telegram-bili-feed-helper&quot;&gt;Telegram-Bili-Feed-Helper&lt;/a&gt;&lt;/strong&gt; 项目通过部署本地 Bot API 服务器，完美解决了大视频解析和发送的问题，同时支持 B 站动态、直播和音频的全方位解析。本文将记录如何利用 Docker Compose 快速部署这一工具。&lt;/p&gt;


&lt;h2&gt;一、 核心组件与原理&lt;/h2&gt;


&lt;p&gt;本项目由四个核心容器组成，共同协作完成任务：&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Main Bot&lt;/strong&gt;: 机器人的“大脑”，负责解析 B 站链接。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;Redis&lt;/strong&gt;: 负责处理解析结果和任务锁的快速缓存。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;: 存储媒体文件的 File ID，避免重复下载。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;Telegram-Bot-API&lt;/strong&gt;: 本地运行的 Telegram API 服务，用于绕过文件大小上传限制。&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;二、 部署前的准备工作&lt;/h2&gt;


&lt;h3&gt;1. &lt;strong&gt;Telegram 凭证&lt;/strong&gt;：&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bot Token&lt;/strong&gt;: 找 &lt;a href=&quot;https://t.me/BotFather&quot; target=&quot;_blank&quot;&gt;@BotFather&lt;/a&gt; 申请。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;API ID/Hash&lt;/strong&gt;: 在 &lt;a href=&quot;https://my.telegram.org&quot; target=&quot;_blank&quot;&gt;my.telegram.org&lt;/a&gt; 申请。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;2. &lt;strong&gt;服务器环境&lt;/strong&gt;：已安装 Docker 和 Docker Compose。&lt;/h3&gt;


&lt;h2&gt;三、 配置文件编写&lt;/h2&gt;


&lt;p&gt;在服务器上创建一个目录（如 &lt;code&gt;bili-bot&lt;/code&gt;），并准备以下两个核心文件。&lt;/p&gt;


&lt;h3&gt;1. &lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/h3&gt;


&lt;p&gt;该文件定义了服务之间的连接关系。注意主程序依赖于数据库和 API 中转站。&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;
services:
  redis:
    image: redis:latest
    env_file: [stack.env]
    volumes: [redis-data:/data]
    restart: always
    networks: [internal_network]

  postgres:
    image: postgres:18
    env_file: [stack.env]
    volumes: [postgresql-data:/var/lib/postgresql]
    restart: always
    networks: [internal_network]

  telegram-bot-api:
    image: aiogram/telegram-bot-api:latest
    env_file: [stack.env]
    volumes: [telegram-bot-api-data:/var/lib/telegram-bot-api]
    restart: always
    networks: [internal_network]

  telegram-bili-feed-helper:
    image: ghcr.io/simonsmh/telegram-bili-feed-helper:master
    depends_on: [redis, postgres, telegram-bot-api]
    env_file: [stack.env]
    volumes: [telegram-bot-api-data:/var/lib/telegram-bot-api]
    restart: always
    networks: [internal_network]

volumes:
  redis-data:
  postgresql-data:
  telegram-bot-api-data:

networks:
  internal_network:
    driver: bridge&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;2. &lt;code&gt;stack.env&lt;/code&gt; (环境变量)&lt;/h2&gt;


&lt;p&gt;这是配置的核心，所有的密钥和连接信息都在这里。&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;# Telegram 基础配置
TOKEN=你的机器人Token
TELEGRAM_API_ID=你的API_ID
TELEGRAM_API_HASH=你的API_HASH

# 本地模式配置 (用于处理大文件)
LOCAL_MODE=1
TELEGRAM_LOCAL=1
API_BASE_URL=http://telegram-bot-api:8081/bot
API_BASE_FILE_URL=http://telegram-bot-api:8081/file/bot
LOCAL_TEMP_FILE_PATH=/var/lib/telegram-bot-api

# 数据库连接
REDIS_URL=redis://redis:6379
DATABASE_URL=postgres://bilifeedbot:bilifeedbot@postgres:5432/bilifeedbot
POSTGRES_DB=bilifeedbot
POSTGRES_USER=bilifeedbot
POSTGRES_PASSWORD=bilifeedbot

#### BEGIN: Bilibili Cookie
# 注意：要把等号后面的内容换成你实际获取到的那一串字符
SESSDATA=你获取的SESSDATA值
BILI_JCT=你获取的bili_jct值
BUVID3=你获取的buvid3值
BUVID4=你获取的buvid4值
DEDEUSERID=你获取的DedeUserID值
# AC_TIME_VALUE 通常不需要，可以保持注释或留空
#### END: Bilibili Cookie&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;四、 启动与日常维护&lt;/h2&gt;


&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;启动服务&lt;/strong&gt;：&lt;br /&gt;在目录下运行 &lt;code&gt;docker compose up -d&lt;/code&gt; 即可一键启动所有容器。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;查看日志&lt;/strong&gt;：&lt;br /&gt;如果机器人没有响应，使用命令 &lt;code&gt;docker compose logs -f telegram-bili-feed-helper&lt;/code&gt; 排查报错。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;功能验证&lt;/strong&gt;：&lt;br /&gt;私聊机器人发送视频链接，它应能自动下载、合并 DASH 流并发送高清视频。&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;五、 进阶提示：权限控制&lt;/h2&gt;


&lt;p&gt;为了防止机器人被滥用，建议在代码中添加针对 &lt;code&gt;message.from_user.id&lt;/code&gt; 的白名单判断，或通过 &lt;a href=&quot;https://t.me/BotFather&quot; target=&quot;_blank&quot;&gt;@BotFather&lt;/a&gt; 关闭机器人的隐私模式（Privacy Mode），使其仅在特定群组中工作。&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>10 分钟复活我的 RSS + 监控 + 备份系统</title><link>https://www.smallmaple.com/en/post/rsshub-vaultwarden--e5-85-a8-e8-87-aa-e5-8a-a8-telegram--e5-ae-89-e5-85-a8-e7-9b-91-e6-8e-</link><guid isPermaLink="false">en:rsshub-vaultwarden--e5-85-a8-e8-87-aa-e5-8a-a8-telegram--e5-ae-89-e5-85-a8-e7-9b-91-e6-8e-</guid><description>
第一阶段：迁移前的“灵魂打包”


在新旧服务器交替时，你只需要从旧服务器带走这三个文件夹/文件：



/root/scripts/monitor/：这是机器人的心脏，包含所有 .py 和 .sh 脚本。


/usr/local/nginx/conf/vhost/：带走其中的</description><pubDate>Sat, 21 Mar 2026 15:45:27 GMT</pubDate><content:encoded>
&lt;h2&gt;第一阶段：迁移前的“灵魂打包”&lt;/h2&gt;


&lt;p&gt;在新旧服务器交替时，你只需要从旧服务器带走这三个文件夹/文件：&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/root/scripts/monitor/&lt;/code&gt;&lt;/strong&gt;：这是机器人的心脏，包含所有 &lt;code&gt;.py&lt;/code&gt; 和 &lt;code&gt;.sh&lt;/code&gt; 脚本。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;&lt;code&gt;/usr/local/nginx/conf/vhost/&lt;/code&gt;&lt;/strong&gt;：带走其中的 &lt;code&gt;rss.conf&lt;/code&gt;（主配置）和&lt;code&gt;blacklist.conf&lt;/code&gt;（黑名单本子）。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;Docker 配置文件&lt;/strong&gt;：带走你的 &lt;code&gt;docker-compose.yml&lt;/code&gt;（包含 RSSHub 和 Vaultwarden 的定义）。&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;第二阶段：新服务器环境初始化&lt;/h2&gt;


&lt;h3&gt;1. 在新服务器上，你需要先完成以下基础安装：&lt;/h3&gt;


&lt;h3&gt;&lt;strong&gt;安装 Docker &amp;amp; Compose&lt;/strong&gt;：&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;curl -fsSL https://get.docker.com | bash&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;2. &lt;strong&gt;安装 Python 依赖&lt;/strong&gt;：&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;pip install pyTelegramBotAPI&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;3. &lt;strong&gt;安装 Rclone&lt;/strong&gt;（如果你之前配置了网盘备份）：按之前的步骤完成 &lt;code&gt;rclone config&lt;/code&gt;。&lt;/h3&gt;


&lt;h2&gt;第三阶段：复活“指挥中心” (Telegram Bot)&lt;/h2&gt;


&lt;h3&gt;1. 放置文件&lt;/h3&gt;


&lt;p&gt;将备份的 &lt;code&gt;monitor&lt;/code&gt; 文件夹整体上传到新服务器的 &lt;code&gt;/root/scripts/&lt;/code&gt; 目录下。&lt;/p&gt;


&lt;h3&gt;2. 权限加持&lt;/h3&gt;


&lt;p&gt;确保所有脚本都有执行权限：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;chmod +x /root/scripts/monitor/*.sh&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;3. 路径自检&lt;/h3&gt;


&lt;p&gt;打开 &lt;code&gt;/root/scripts/monitor/admin_bot.py&lt;/code&gt;，确认以下变量是否正确：&lt;/p&gt;


&lt;ul&gt;
&lt;li&gt;&lt;code&gt;TOKEN&lt;/code&gt;：你的机器人 Token。&lt;/li&gt;


&lt;li&gt;&lt;code&gt;ADMIN_ID&lt;/code&gt;：你的 Telegram ID。&lt;/li&gt;


&lt;li&gt;&lt;code&gt;NGINX_CONF&lt;/code&gt;：指向新环境的 &lt;code&gt;/usr/local/nginx/conf/vhost/blacklist.conf&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;4. 启动机器人&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;mkdir -p /root/scripts/monitor/logs
nohup python3 /root/scripts/monitor/admin_bot.py &amp;gt; /root/scripts/monitor/logs/bot_log.txt 2&amp;gt;&amp;amp;1 &amp;amp;&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;第四阶段：复活 Nginx 拦截体系&lt;/h2&gt;


&lt;h3&gt;1. &lt;strong&gt;恢复黑名单&lt;/strong&gt;：将备份的 &lt;code&gt;blacklist.conf&lt;/code&gt; 放到新服务器对应位置。&lt;/h3&gt;


&lt;h3&gt;2. &lt;strong&gt;恢复站点配置&lt;/strong&gt;：将 &lt;code&gt;rss.conf&lt;/code&gt; 放入 vhost 目录，并确保其中包含 &lt;code&gt;include /.../blacklist.conf;&lt;/code&gt;。&lt;/h3&gt;


&lt;h3&gt;3. &lt;strong&gt;重载 Nginx&lt;/strong&gt;：&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;nginx -t &amp;amp;&amp;amp; nginx -s reload&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;第五阶段：复活 Vaultwarden 备份&lt;/h2&gt;


&lt;p&gt;由于使用了 &lt;code&gt;docker-compose.yml&lt;/code&gt;，恢复非常简单：&lt;/p&gt;


&lt;h3&gt;1. 将 &lt;code&gt;docker-compose.yml&lt;/code&gt; 放到新服务器。&lt;/h3&gt;


&lt;h3&gt;2. &lt;strong&gt;关键环境变量&lt;/strong&gt;：确保 &lt;code&gt;PING_URL_WHEN_SUCCESS&lt;/code&gt; 和 &lt;code&gt;CURL_OPTIONS&lt;/code&gt; 里的 Token 和 ChatID 依然有效。&lt;/h3&gt;


&lt;h3&gt;3. &lt;strong&gt;启动&lt;/strong&gt;：&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;4. &lt;strong&gt;测试&lt;/strong&gt;：运行以下命令手动触发一次备份，看机器人响不响：&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;docker exec vaultwarden-backup-1 bash /app/backup.sh&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;第六阶段：最后的自动化&lt;/h2&gt;


&lt;p&gt;输入 &lt;code&gt;crontab -e&lt;/code&gt;，把之前那两行“护法”指令写进去：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;# 1. 每一分钟检查一次是否有高频攻击
* * * * * /bin/bash /root/scripts/monitor/rss_watchdog.sh

# 2. 如果你还想要早上的定时简报（可选）
00 07 * * * /bin/bash /root/scripts/monitor/send_report.sh&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;💡 避坑总结&lt;/h2&gt;


&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;权限问题&lt;/strong&gt;：迁移后如果机器人提示“执行脚本失败”，通常是忘了 &lt;code&gt;chmod +x&lt;/code&gt;。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;路径问题&lt;/strong&gt;：如果 &lt;code&gt;/list&lt;/code&gt; 为空，检查 &lt;code&gt;admin_bot.py&lt;/code&gt; 里的 &lt;code&gt;NGINX_CONF&lt;/code&gt; 路径是否写对了。&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:网络</category></item><item><title>GitHub笔记</title><link>https://www.smallmaple.com/en/post/github-e4-bb-93-e5-ba-93-e6-b5-81-e7-a8-8b</link><guid isPermaLink="false">en:github-e4-bb-93-e5-ba-93-e6-b5-81-e7-a8-8b</guid><description>
推送


1. 初始化


git init


2. 添加文件：


git add .


3. 初次存档：


git commit -m &quot;新项目启动&quot;


4. 关联新地址：


git remote add origin</description><pubDate>Sat, 14 Mar 2026 15:47:23 GMT</pubDate><content:encoded>
&lt;h2&gt;推送&lt;/h2&gt;


&lt;h4&gt;1. 初始化&lt;/h4&gt;


&lt;pre&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;2. &lt;strong&gt;添加文件&lt;/strong&gt;：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;3. &lt;strong&gt;初次存档&lt;/strong&gt;：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git commit -m &quot;新项目启动&quot;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;4. 关联新地址：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git remote add origin https://github.com/你的用户名/新仓库名.git&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;5. &lt;strong&gt;推送到云端&lt;/strong&gt;：&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git branch -M main
git push -u origin main&lt;/code&gt;&lt;/pre&gt;


&lt;h2&gt;拉取&lt;/h2&gt;


&lt;h3&gt;1. 初次下载&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;1. &lt;strong&gt;复制链接&lt;/strong&gt;：在你的 GitHub 仓库页面点击 &lt;strong&gt;Code&lt;/strong&gt; 按钮，复制 HTTPS 链接。&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
&lt;li&gt;2. &lt;strong&gt;打开终端&lt;/strong&gt;：在你想要存放代码的文件夹（比如“桌面”）右键打开 CMD 或终端。&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
&lt;li&gt;3. &lt;strong&gt;输入命令&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;


&lt;pre&gt;&lt;code&gt;git clone 仓库链接&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;执行完后，你会发现电脑上多了一个文件夹，里面的内容和 GitHub 上一模一样。&lt;/p&gt;


&lt;h3&gt;2. 同步更新&lt;/h3&gt;


&lt;p&gt;假设你在公司电脑上修改了代码并推送到 GitHub，回到家想在家里电脑继续写，这时候你已经有这个文件夹了，只需要执行 &lt;code&gt;pull&lt;/code&gt;（拉取）。这就像是订阅了报纸，每天早上只领一份“更新的部分”。&lt;/p&gt;


&lt;p&gt;操作步骤：&lt;/p&gt;


&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;进入文件夹&lt;/strong&gt;：在命令行里进入你的项目目录（比如 &lt;code&gt;cd douyin&lt;/code&gt;）。&lt;/li&gt;


&lt;li&gt;&lt;strong&gt;执行命令&lt;/strong&gt;：&lt;/li&gt;
&lt;/ol&gt;


&lt;pre&gt;&lt;code&gt;git pull&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Git 会自动对比云端和本地的区别，只把缺少的改动下载并合并进来。&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>前端笔记</title><link>https://www.smallmaple.com/en/post/e5-89-8d-e7-ab-af-e7-ac-94-e8-ae-b0</link><guid isPermaLink="false">en:e5-89-8d-e7-ab-af-e7-ac-94-e8-ae-b0</guid><description>
VsCode 快捷键



ctrl+enter 跳转下一行


shift+alt+方向键 复制当前一行


shift+del 删除当前一行


shift+alt+f 格式化文档


alt+方向键 移动当前或选中行


双击选中 ctrl+d 修改所有相同名字



函数模板</description><pubDate>Sun, 06 Jul 2025 03:51:06 GMT</pubDate><content:encoded>
&lt;h3&gt;VsCode 快捷键&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;ctrl+enter 跳转下一行&lt;/li&gt;


&lt;li&gt;shift+alt+方向键 复制当前一行&lt;/li&gt;


&lt;li&gt;shift+del 删除当前一行&lt;/li&gt;


&lt;li&gt;shift+alt+f 格式化文档&lt;/li&gt;


&lt;li&gt;alt+方向键 移动当前或选中行&lt;/li&gt;


&lt;li&gt;双击选中 ctrl+d 修改所有相同名字&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;函数模板&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;    // 取到 N ~ M 的随机整数
    function getRandom(N, M) {
      return Math.floor(Math.random() * (M - N + 1)) + N
    }&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;自动补全技巧&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;input:checkbox =&amp;gt;
&amp;lt;input type=&quot;checkbox&quot; name=&quot;&quot; id=&quot;&quot;&amp;gt;
div*3.active{$} =&amp;gt;
&amp;lt;div class=&quot;active&quot;&amp;gt;1&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;active&quot;&amp;gt;2&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;active&quot;&amp;gt;3&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>PS学习记录</title><link>https://www.smallmaple.com/en/post/ps-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95</link><guid isPermaLink="false">en:ps-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95</guid><description>
去除背景


魔棒工具，选择需要去除的区域  然后删除 (界面顶部有个容差)
</description><pubDate>Sun, 09 Feb 2025 05:15:23 GMT</pubDate><content:encoded>
&lt;h3&gt;去除背景&lt;/h3&gt;


&lt;p&gt;魔棒工具，选择需要去除的区域  然后删除 (界面顶部有个容差)&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>拼多多代码块</title><link>https://www.smallmaple.com/en/post/e6-9a-82-e7-94-a8-e6-8b-bc-e5-a4-9a-e5-a4-9a-e9-83-a8-e5-88-86-e4-bb-a3-e7-a0-81-e5-9d-97</link><guid isPermaLink="false">en:e6-9a-82-e7-94-a8-e6-8b-bc-e5-a4-9a-e5-a4-9a-e9-83-a8-e5-88-86-e4-bb-a3-e7-a0-81-e5-9d-97</guid><description>
限时秒杀


function startClickingEndButtons() {
    // 初始时，点击所有符合条件的按钮
    clickNextEndButton();
  }
  
  function clickNextEndButton() {
    //</description><pubDate>Tue, 21 Jan 2025 07:01:22 GMT</pubDate><content:encoded>
&lt;h3&gt;限时秒杀&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;function startClickingEndButtons() {
    // 初始时，点击所有符合条件的按钮
    clickNextEndButton();
  }
  
  function clickNextEndButton() {
    // 获取所有标签中的&lt;a&gt;标签，查找包含&quot;取消活动&quot;字样的&lt;/a&gt;&lt;a&gt;标签
    const allATags = document.querySelectorAll(&apos;td a&apos;);
    const endTags = [];
  
    // 遍历所有&lt;/a&gt;&lt;a&gt;标签，找到包含&quot;取消活动&quot;文本的那个
    allATags.forEach(aTag =&amp;gt; {
      if (aTag.textContent.includes(&apos;取消活动&apos;)) {
        endTags.push(aTag); // 将所有包含&quot;结束&quot;的&lt;/a&gt;&lt;a&gt;标签加入endTags数组
      }
    });
  
    if (endTags.length &amp;gt; 0) {
      const nextTag = endTags[0]; // 获取第一个符合条件的标签
      console.log(&apos;Clicking button with &quot;取消活动&quot; text&apos;);
      nextTag.click(); // 点击第一个符合条件的&lt;/a&gt;&lt;a&gt;标签
      
      // 延迟1秒后点击弹出窗口中的&quot;放弃活动&quot;按钮
      setTimeout(() =&amp;gt; {
        clickPopupButton();
        // 延迟2秒再继续点击
        setTimeout(() =&amp;gt; {
          console.log(&quot;Waiting for page update...&quot;);
          // 页面更新后，继续点击下一个符合条件的a标签
          clickNextEndButton();
        }, 2000); // 页面刷新后等待2秒
      }, 300); // 等待1秒，确保弹出窗口显示
    } else {
      console.log(&apos;No more &quot;放弃活动&quot; buttons found&apos;);
    }
  }
  
  // 点击弹出的&quot;确认结束&quot;按钮
function clickPopupButton() {
  // 获取所有具有data-testid=&quot;beast-core-button&quot;的button标签
  const buttons = document.querySelectorAll(&apos;button[data-testid=&quot;beast-core-button&quot;]&apos;);
  
  // 遍历所有按钮，查找包含&quot;放弃活动&quot;文本的按钮
  buttons.forEach(button =&amp;gt; {
    const span = button.querySelector(&apos;span&apos;);
    if (span &amp;amp;&amp;amp; span.textContent.includes(&apos;放弃活动&apos;)) {
      console.log(&apos;Clicked the confirm end button&apos;);
      button.click(); // 点击符合条件的按钮
    }
  });
}  
  // 启动点击操作
  startClickingEndButtons();
&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;已驳回&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;function startClickingEndButtons() {
    // 初始时，点击所有符合条件的按钮
    clickNextEndButton();
  }
  
  function clickNextEndButton() {
    // 获取所有&amp;lt;td&amp;gt;标签中的&amp;lt;a&amp;gt;标签，查找包含&quot;删除草稿&quot;字样的&amp;lt;a&amp;gt;标签
    const allATags = document.querySelectorAll(&apos;td a&apos;);
    const endTags = [];
  
    // 遍历所有&amp;lt;a&amp;gt;标签，找到包含&quot;删除草稿&quot;文本的那个
    allATags.forEach(aTag =&amp;gt; {
      if (aTag.textContent.includes(&apos;删除草稿&apos;)) {
        endTags.push(aTag); // 将所有包含&quot;结束&quot;的&amp;lt;a&amp;gt;标签加入endTags数组
      }
    });
  
    if (endTags.length &amp;gt; 0) {
      const nextTag = endTags[0]; // 获取第一个符合条件的标签
      console.log(&apos;Clicking button with &quot;删除草稿&quot; text&apos;);
      nextTag.click(); // 点击第一个符合条件的&amp;lt;a&amp;gt;标签
      
      // 延迟1秒后点击弹出窗口中的&quot;确认删除&quot;按钮
      setTimeout(() =&amp;gt; {
        clickPopupButton();
        // 延迟2秒再继续点击
        setTimeout(() =&amp;gt; {
          console.log(&quot;Waiting for page update...&quot;);
          // 页面更新后，继续点击下一个符合条件的a标签
          clickNextEndButton();
        }, 3000); // 页面刷新后等待2秒
      }, 300); // 等待1秒，确保弹出窗口显示
    } else {
      console.log(&apos;No more &quot;确认删除&quot; buttons found&apos;);
    }
  }
  
  // 点击弹出的&quot;确认结束&quot;按钮
function clickPopupButton() {
  // 获取所有具有data-testid=&quot;beast-core-button&quot;的button标签
  const buttons = document.querySelectorAll(&apos;button[data-testid=&quot;beast-core-modal-ok-button&quot;]&apos;);
  
  // 遍历所有按钮，查找包含&quot;确认删除&quot;文本的按钮
  buttons.forEach(button =&amp;gt; {
    const span = button.querySelector(&apos;span&apos;);
    if (span &amp;amp;&amp;amp; span.textContent.includes(&apos;确认&apos;)) {
      console.log(&apos;Clicked the confirm end button&apos;);
      button.click(); // 点击符合条件的按钮
    }
  });
}  
  // 启动点击操作
  startClickingEndButtons();
&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;首单&amp;amp;限量&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;function startClickingEndButtons() {
    // 初始时，点击所有符合条件的按钮
    clickNextEndButton();
  }
  
  function clickNextEndButton() {
    // 获取所有标签中的&lt;a&gt;标签，查找包含&quot;结束&quot;字样的&lt;/a&gt;&lt;a&gt;标签
    const allATags = document.querySelectorAll(&apos;td a&apos;);
    const endTags = [];
  
    // 遍历所有&lt;/a&gt;&lt;a&gt;标签，找到包含&quot;结束&quot;文本的那个
    allATags.forEach(aTag =&amp;gt; {
      if (aTag.textContent.includes(&apos;结束&apos;)) {
        endTags.push(aTag); // 将所有包含&quot;结束&quot;的&lt;/a&gt;&lt;a&gt;标签加入endTags数组
      }
    });
  
    if (endTags.length &amp;gt; 0) {
      const nextTag = endTags[0]; // 获取第一个符合条件的标签
      console.log(&apos;Clicking button with &quot;结束&quot; text&apos;);
      nextTag.click(); // 点击第一个符合条件的&lt;/a&gt;&lt;a&gt;标签
      
      // 延迟500毫秒后点击弹出窗口中的&quot;确认结束&quot;按钮
      setTimeout(() =&amp;gt; {
        clickPopupButton();
        // 延迟2秒再继续点击
        setTimeout(() =&amp;gt; {
          console.log(&quot;Waiting for page update...&quot;);
          // 页面更新后，继续点击下一个符合条件的a标签
          clickNextEndButton();
        }, 2000); // 页面刷新后等待2秒
      }, 500); // 等待500毫秒，确保弹出窗口显示
    } else {
      console.log(&apos;No more &quot;结束&quot; buttons found&apos;);
    }
  }
  
  // 点击弹出的&quot;确认结束&quot;按钮
  function clickPopupButton() {
    // 获取所有具有data-testid=&quot;beast-core-button&quot;的button标签
    const buttons = document.querySelectorAll(&apos;button[data-testid=&quot;beast-core-button&quot;]&apos;);
    
    // 遍历所有按钮，查找包含&quot;确认结束&quot;文本的按钮
    buttons.forEach(button =&amp;gt; {
      const span = button.querySelector(&apos;span&apos;);
      if (span &amp;amp;&amp;amp; span.textContent.includes(&apos;确认&apos;)) {
        console.log(&apos;Clicked the confirm end button&apos;);
        button.click(); // 点击符合条件的按钮
        // 继续点击 &quot;直接结束&quot; 按钮
        setTimeout(() =&amp;gt; {
          clickDirectEndButton();
        }, 500); // 等待500毫秒，确保 &quot;直接结束&quot; 按钮已加载
      }
    });
  }
  
  // 点击弹出的&quot;直接结束&quot;按钮
  function clickDirectEndButton() {
    // 获取具有 &quot;直接结束&quot; 文本的&lt;/a&gt;&lt;a&gt;标签
    const directEndButton = document.querySelector(&apos;a[data-tracking-viewid=&quot;straight_end_shared&quot;]&apos;);
    
    if (directEndButton) {
      console.log(&apos;Clicked the direct end button&apos;);
      directEndButton.click(); // 点击 &quot;直接结束&quot; 按钮
    } else {
      console.log(&apos;Direct end button not found&apos;);
    }
  }
  
  // 启动点击操作
  startClickingEndButtons();
&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;提取当页ID&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;// 创建一个函数来提取ID编号并导出为TXT文件
(function () {
    // 查找所有包含ID编号的元素
    const orderElements = document.querySelectorAll(&apos;td&apos;);
 
    // 用于存储提取的ID编号
    let orderData = &apos;&apos;;
 
    orderElements.forEach((element) =&amp;gt; {
        if (element.innerText.includes(&apos;ID&apos;)) {
            // 使用正则提取ID编号
            const match = element.innerText.match(/ID:([\d]+)/);
            if (match &amp;amp;&amp;amp; match[1]) {
                orderData += match[1].trim() + &apos;\n&apos;;
            }
        }
    });
 
    if (orderData) {
        // 创建一个Blob对象
        const blob = new Blob([orderData], { type: &apos;text/plain&apos; });
 
        // 创建一个下载链接
        const link = document.createElement(&apos;a&apos;);
        link.href = URL.createObjectURL(blob);
        link.download = &apos;order_numbers.txt&apos;;
 
        // 触发下载
        document.body.appendChild(link);
        link.click();
 
        // 移除下载链接
        document.body.removeChild(link);
 
        console.log(&apos;ID编号已成功导出为TXT文件&apos;);
    } else {
        console.warn(&apos;未找到ID编号&apos;);
    }
})();
&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;新版活动提取&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;// 修正版商品ID提取脚本
const ids = new Set();
let page = 1;

const extractIds = () =&amp;gt; {
  console.log(`正在提取第 ${page} 页`);
  // 同时匹配两种可能的元素
  document.querySelectorAll(&apos;span[style*=&quot;rgba(0, 0, 0, 0.4)&quot;], td&apos;)
    .forEach(el =&amp;gt; {
      const match = el.textContent.match(/\d{10,}/);
      if (match) ids.add(match[0]);
    });
};

const nextPage = () =&amp;gt; {
  const nextBtn = document.querySelector(&apos;[data-testid=&quot;beast-core-pagination-next&quot;]:not(.PGT_disabled_5-141-0)&apos;);
  if (nextBtn) {
    nextBtn.click();
    page++;
    setTimeout(main, 2000); // 保持2秒间隔
  } else {
    exportData();
  }
};

const exportData = () =&amp;gt; {
  const content = [...ids].join(&apos;\n&apos;);
  const blob = new Blob([content], {type: &apos;text/plain&apos;});
  const link = document.createElement(&apos;a&apos;);
  link.href = URL.createObjectURL(blob);
  link.download = `提取的商品ID_${new Date().toLocaleString().replace(/[\/:]/g,&apos;-&apos;)}.txt`;
  link.click();
  console.log(`✅ 完成！共提取 ${ids.size} 个唯一ID`);
};

const main = () =&amp;gt; {
  try {
    extractIds();
    nextPage();
  } catch (e) {
    console.warn(&apos;⚠️ 发生错误:&apos;, e);
    nextPage(); // 继续尝试下一页
  }
};

// 1秒后开始执行（确保DOM加载）
setTimeout(main, 1000);
&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;商品数据&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;(async function() {
    console.log(&quot;启动采集脚本...&quot;);

    // === 配置区 ===
    const NEXT_PAGE_SELECTOR = &apos;li[data-testid=&quot;beast-core-pagination-next&quot;]&apos;;
    const WAIT_TIME = 2000; 
    // =============

    const sleep = (ms) =&amp;gt; new Promise(r =&amp;gt; setTimeout(r, ms));

    // 1. 文件名生成
    function getFileNameMeta() {
        let shopName = &quot;拼多多店铺&quot;;
        let dateInfo = &quot;未知时间&quot;;
        try {
            const nameEl = document.querySelector(&apos;.user-name-text&apos;);
            if (nameEl) shopName = nameEl.innerText.trim();

            const dateEl = document.querySelector(&apos;[class*=&quot;goods-detail_subTitle&quot;]&apos;);
            if (dateEl) {
                let text = dateEl.innerText.trim().replace(/统计时间[：:]/g, &quot;&quot;).trim();
                const timeMatch = text.match(/^\d{4}-\d{2}-\d{2}\s+(\d{2}):(\d{2}):(\d{2})$/);
                if (timeMatch) {
                    dateInfo = `${timeMatch[1]}点${timeMatch[2]}分${timeMatch[3]}秒`;
                } else {
                    dateInfo = text;
                }
            }
        } catch (e) {}
        return `${shopName}_${dateInfo}数据`.replace(/[\\/:*?&quot;&amp;lt;&amp;gt;|]/g, &quot;_&quot;).replace(/\s+/g, &quot;_&quot;);
    }

    // 2. 提取当前标签
    function getActiveTimeLabel() {
        let label = &quot;今日&quot;;
        try {
            const filterContainer = document.querySelector(&apos;div[class*=&quot;goods-detail_filterWrapper&quot;]&apos;);
            if (filterContainer) {
                const activeLabel = filterContainer.querySelector(&apos;label[data-testid=&quot;beast-core-radio&quot;][data-checked=&quot;true&quot;]&apos;);
                if (activeLabel) label = activeLabel.innerText.replace(/\n/g, &apos;&apos;).trim();
            }
        } catch (e) {}
        return label;
    }

    // 3. 提取单页数据 (核心修改)
    function extractPageData(timeLabel) {
        const ths = document.querySelectorAll(&apos;thead tr[data-testid=&quot;beast-core-table-header-tr&quot;] th&apos;);
        let headers = [];
        ths.forEach((th) =&amp;gt; {
            let text = th.innerText.replace(/\n/g, &apos;&apos;).trim();
            if (text.includes(&quot;操作&quot;)) headers.push({ name: &quot;operation&quot;, type: &quot;ignore&quot; });
            else if (text.includes(&quot;商品信息&quot;)) headers.push({ name: &quot;product_info&quot;, type: &quot;info&quot; });
            else headers.push({ name: text, type: &quot;metric&quot; });
        });

        const rows = document.querySelectorAll(&apos;tr[data-testid=&quot;beast-core-table-body-tr&quot;]&apos;);
        let pageList = [];

        rows.forEach((row) =&amp;gt; {
            let rowData = { &quot;meta_time_label&quot;: timeLabel };
            const tds = row.querySelectorAll(&apos;td[data-testid=&quot;beast-core-table-td&quot;]&apos;);
            
            tds.forEach((td, colIndex) =&amp;gt; {
                if (colIndex &amp;gt;= headers.length) return;
                const header = headers[colIndex];

                if (header.type === &quot;info&quot;) {
                    try {
                        let titleEl = td.querySelector(&apos;.beast-core-ellipsis-1&apos;);
                        rowData[&quot;商品名称&quot;] = titleEl ? titleEl.innerText.trim() : &quot;未知标题&quot;;
                        let idText = td.innerText.match(/ID:(\d+)/);
                        rowData[&quot;商品ID&quot;] = idText ? idText[1] : &quot;未知ID&quot;;
                    } catch (e) {}
                } else if (header.type === &quot;metric&quot;) {
                    try {
                        let mainValEl = td.querySelector(&apos;div[class*=&quot;list_value__&quot;]&apos;);
                        let subValEl = td.querySelector(&apos;div[class*=&quot;list_ratioValue__&quot;]&apos;);
                        let subText = &quot;&quot;;
                        
                        if (subValEl) {
                            let clone = subValEl.cloneNode(true);

                            // 1. 查找前缀元素 (如&quot;较前1日&quot;)
                            // 关键修改：去掉了后面的空格，让它紧贴趋势词
                            let prefixEl = clone.querySelector(&apos;.radio-indicator-item_radioPrefix__zh8iy&apos;);
                            let hasPrefix = false;
                            if (prefixEl) {
                                hasPrefix = true;
                                prefixEl.innerText = prefixEl.innerText.trim(); // 去空格
                            }

                            // 2. 查找并替换箭头
                            let hasArrow = false;
                            
                            let downSvg = clone.querySelector(&apos;svg[data-testid=&quot;beast-core-icon-arrow-down_filled&quot;]&apos;);
                            if (downSvg) {
                                hasArrow = true;
                                // &quot;下降 &quot; (带空格，分隔数值)
                                downSvg.parentNode.replaceChild(document.createTextNode(&quot;下降 &quot;), downSvg);
                            }

                            let upSvg = clone.querySelector(&apos;svg[data-testid=&quot;beast-core-icon-arrow-up_filled&quot;]&apos;);
                            if (upSvg) {
                                hasArrow = true;
                                // &quot;上涨 &quot; (带空格，分隔数值)
                                upSvg.parentNode.replaceChild(document.createTextNode(&quot;上涨 &quot;), upSvg);
                            }

                            // 3. 处理&quot;持平&quot;逻辑
                            // 如果有前缀(较前1日)，但没有箭头，说明是持平
                            // 不管数值是 0 还是 0%，统一处理
                            if (hasPrefix &amp;amp;&amp;amp; !hasArrow) {
                                // 在前缀后面强制插入 &quot;持平 &quot;
                                let flatText = document.createTextNode(&quot;持平 &quot;);
                                prefixEl.after(flatText);
                            }

                            // 4. 提取最终文本
                            // 此时结构应该是: &quot;较前1日&quot; + &quot;下降 &quot; + &quot;28%&quot;
                            // 或者: &quot;较前1日&quot; + &quot;持平 &quot; + &quot;0&quot;
                            let rawText = clone.innerText.replace(/\n/g, &apos;&apos;).trim();
                            
                            // 5. 最终清洗：将多个空格合并为1个，确保 split 正常
                            subText = rawText.replace(/\s+/g, &apos; &apos;).trim();
                        }
                        
                        rowData[header.name + &quot;_主&quot;] = mainValEl ? mainValEl.innerText.replace(/\n/g, &apos;&apos;).trim() : &quot;&quot;;
                        rowData[header.name + &quot;_副&quot;] = subText;
                    } catch (e) {}
                }
            });
            if (Object.keys(rowData).length &amp;gt; 0) pageList.push(rowData);
        });
        return pageList;
    }

    // 4. 下载逻辑
    function downloadAll(finalList, fontUrl, baseFileName) {
        function triggerDownload(content, fileName, mimeType) {
            const blob = (content instanceof Blob) ? content : new Blob([content], { type: mimeType });
            const link = document.createElement(&quot;a&quot;);
            link.href = URL.createObjectURL(blob);
            link.download = fileName;
            link.style.display = &apos;none&apos;;
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }

        console.log(`✅ 采集完成！文件名: ${baseFileName}.json`);
        
        if (fontUrl) {
            fetch(fontUrl)
                .then(res =&amp;gt; res.blob())
                .then(blob =&amp;gt; {
                    triggerDownload(blob, &apos;font.ttf&apos;, &apos;font/ttf&apos;);
                    setTimeout(() =&amp;gt; {
                        const jsonContent = JSON.stringify(finalList, null, 2);
                        triggerDownload(jsonContent, `${baseFileName}.json`, &apos;application/json&apos;);
                    }, 1000);
                }).catch(() =&amp;gt; {
                    const jsonContent = JSON.stringify(finalList, null, 2);
                    triggerDownload(jsonContent, `${baseFileName}.json`, &apos;application/json&apos;);
                });
        } else {
            const jsonContent = JSON.stringify(finalList, null, 2);
            triggerDownload(jsonContent, `${baseFileName}.json`, &apos;application/json&apos;);
        }
    }

    // === 主流程 ===
    let fontUrl = null;
    const styles = document.querySelectorAll(&apos;style&apos;);
    for (let style of styles) {
        if (style.innerHTML.includes(&apos;spider-font&apos;) &amp;amp;&amp;amp; style.innerHTML.includes(&apos;.ttf&apos;)) {
            const match = style.innerHTML.match(/url\([&apos;&quot;]?(.*?)[&apos;&quot;]?\)/);
            if (match &amp;amp;&amp;amp; match[1]) {
                fontUrl = match[1];
                if (fontUrl.startsWith(&apos;//&apos;)) fontUrl = &apos;https:&apos; + fontUrl;
                break;
            }
        }
    }

    const finalFileName = getFileNameMeta();
    console.log(&quot;目标文件名:&quot;, finalFileName);

    const mode = prompt(`文件名: ${finalFileName}.json\n\n模式：\n1 = 仅当前页\nall = 翻页采集所有`, &quot;1&quot;);
    if (!mode) return;

    const timeLabel = getActiveTimeLabel();
    let allData = [];

    if (mode === &apos;1&apos;) {
        allData = extractPageData(timeLabel);
        downloadAll(allData, fontUrl, finalFileName);
    } else if (mode === &apos;all&apos;) {
        let pageNum = 1;
        while (true) {
            console.log(`正在采集第 ${pageNum} 页...`);
            const pageData = extractPageData(timeLabel);
            if (pageData.length === 0) { console.warn(&quot;空数据停止&quot;); break; }
            allData.push(...pageData);

            const nextBtn = document.querySelector(NEXT_PAGE_SELECTOR);
            if (!nextBtn) break;
            let isDisabled = false;
            for (let cls of nextBtn.classList) {
                if (cls.includes(&quot;PGT_disabled&quot;)) { isDisabled = true; break; }
            }
            if (isDisabled) { console.log(&quot;翻页结束&quot;); break; }

            nextBtn.click();
            pageNum++;
            await sleep(WAIT_TIME);
        }
        downloadAll(allData, fontUrl, finalFileName);
    }
})();&lt;/code&gt;&lt;/pre&gt;
</content:encoded><category>category:技术</category></item><item><title>英语学习记录-单词</title><link>https://www.smallmaple.com/en/post/e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95--e5-8d-95-e8-af-8d</link><guid isPermaLink="false">en:e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95--e5-8d-95-e8-af-8d</guid><description>
excuse mehandbagjobkeyboardpardonThank you very(so) muchoperatorengineerpenpencilhe his she herpolicemanbookwatchtaxi driverpolicewomancoatdress</description><pubDate>Sat, 11 Jan 2025 08:49:31 GMT</pubDate><content:encoded>
&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;excuse me&lt;/td&gt;&lt;td&gt;handbag&lt;/td&gt;&lt;td&gt;job&lt;/td&gt;&lt;td&gt;keyboard&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;pardon&lt;/td&gt;&lt;td&gt;Thank you very(so) much&lt;/td&gt;&lt;td&gt;operator&lt;/td&gt;&lt;td&gt;engineer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;pen&lt;/td&gt;&lt;td&gt;pencil&lt;/td&gt;&lt;td&gt;he his she her&lt;/td&gt;&lt;td&gt;policeman&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;book&lt;/td&gt;&lt;td&gt;watch&lt;/td&gt;&lt;td&gt;taxi driver&lt;/td&gt;&lt;td&gt;policewoman&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;coat&lt;/td&gt;&lt;td&gt;dress skirt&lt;/td&gt;&lt;td&gt;air hostess&lt;br /&gt;fight attendant&lt;/td&gt;&lt;td&gt;postman&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;shirt&lt;/td&gt;&lt;td&gt;car&lt;/td&gt;&lt;td&gt;milkman&lt;/td&gt;&lt;td&gt;nurse&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;house&lt;/td&gt;&lt;td&gt;umbrella&lt;/td&gt;&lt;td&gt;housewife&lt;/td&gt;&lt;td&gt;mechanic&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;please&lt;/td&gt;&lt;td&gt;here&lt;/td&gt;&lt;td&gt;hairdresser&lt;/td&gt;&lt;td&gt;hello&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;my&lt;/td&gt;&lt;td&gt;ticket&lt;/td&gt;&lt;td&gt;hi&lt;/td&gt;&lt;td&gt;how&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;number&lt;/td&gt;&lt;td&gt;five&lt;/td&gt;&lt;td&gt;fine&lt;/td&gt;&lt;td&gt;today&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sorry&lt;/td&gt;&lt;td&gt;sir madam&lt;/td&gt;&lt;td&gt;well&lt;/td&gt;&lt;td&gt;thanks&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cloakroom&lt;/td&gt;&lt;td&gt;suit&lt;/td&gt;&lt;td&gt;goodbye&lt;/td&gt;&lt;td&gt;fat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;school&lt;/td&gt;&lt;td&gt;son daughter&lt;/td&gt;&lt;td&gt;shin&lt;/td&gt;&lt;td&gt;tall&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;David Joseph Beckham&lt;/td&gt;&lt;td&gt;Mr . Miss Mrs. Ms.&lt;/td&gt;&lt;td&gt;short&lt;/td&gt;&lt;td&gt;dirty&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;good morning&lt;/td&gt;&lt;td&gt;new student&lt;/td&gt;&lt;td&gt;clean&lt;/td&gt;&lt;td&gt;hot&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;French&lt;/td&gt;&lt;td&gt;German&lt;/td&gt;&lt;td&gt;cold&lt;/td&gt;&lt;td&gt;old&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Nice to meet you&lt;/td&gt;&lt;td&gt;Japanese&lt;/td&gt;&lt;td&gt;young&lt;/td&gt;&lt;td&gt;busy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Korean&lt;/td&gt;&lt;td&gt;Chinese&lt;/td&gt;&lt;td&gt;lazy&lt;/td&gt;&lt;td&gt;blue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;too&lt;/td&gt;&lt;td&gt;make brand&lt;/td&gt;&lt;td&gt;perhaps&lt;/td&gt;&lt;td&gt;white&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Swedish   Sweden&lt;/td&gt;&lt;td&gt;English England&lt;/td&gt;&lt;td&gt;catch&lt;/td&gt;&lt;td&gt;whose&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;American America&lt;/td&gt;&lt;td&gt;Italian Italy&lt;/td&gt;&lt;td&gt;father   mother&lt;/td&gt;&lt;td&gt;sister   brother&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;I am...&lt;/td&gt;&lt;td&gt;You are&lt;/td&gt;&lt;td&gt;blouse&lt;/td&gt;&lt;td&gt;tie&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;he/she/it is&lt;/td&gt;&lt;td&gt;nationality&lt;/td&gt;&lt;td&gt;colour    color&lt;/td&gt;&lt;td&gt;green&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;come here&lt;/td&gt;&lt;td&gt;upstairs&lt;/td&gt;&lt;td&gt;downstairs&lt;/td&gt;&lt;td&gt;smart&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;hat&lt;/td&gt;&lt;td&gt;same&lt;/td&gt;&lt;td&gt;different&lt;/td&gt;&lt;td&gt;lovely&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;case&lt;/td&gt;&lt;td&gt;carpet&lt;/td&gt;&lt;td&gt;dog&lt;/td&gt;&lt;td&gt;customs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;officer  office&lt;/td&gt;&lt;td&gt;girl   boy&lt;/td&gt;&lt;td&gt;Danish&lt;/td&gt;&lt;td&gt;Denmark&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Norwegian&lt;/td&gt;&lt;td&gt;Norway&lt;/td&gt;&lt;td&gt;passport&lt;/td&gt;&lt;td&gt;brown&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tourist&lt;/td&gt;&lt;td&gt;friend&lt;/td&gt;&lt;td&gt;Russian&lt;/td&gt;&lt;td&gt;Dutch&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Holland&lt;/td&gt;&lt;td&gt;red&lt;/td&gt;&lt;td&gt;grey&lt;/td&gt;&lt;td&gt;yellow&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;black white&lt;/td&gt;&lt;td&gt;orange&lt;/td&gt;&lt;td&gt;these this&lt;/td&gt;&lt;td&gt;those that&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;employee&lt;/td&gt;&lt;td&gt;hardworking&lt;/td&gt;&lt;td&gt;sales&lt;/td&gt;&lt;td&gt;man woman men women&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;assistant&lt;/td&gt;&lt;td&gt;matter&lt;/td&gt;&lt;td&gt;children child&lt;/td&gt;&lt;td&gt;tired&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;thirsty&lt;/td&gt;&lt;td&gt;mum&lt;/td&gt;&lt;td&gt;sit down&lt;/td&gt;&lt;td&gt;right&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ice cream&lt;/td&gt;&lt;td&gt;big small&lt;/td&gt;&lt;td&gt;open&lt;/td&gt;&lt;td&gt;shut&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;light  heavy&lt;/td&gt;&lt;td&gt;long   short&lt;/td&gt;&lt;td&gt;shoe&lt;/td&gt;&lt;td&gt;grandfather&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;grandmother&lt;/td&gt;&lt;td&gt;give&lt;/td&gt;&lt;td&gt;one&lt;/td&gt;&lt;td&gt;which&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;empty&lt;/td&gt;&lt;td&gt;full&lt;/td&gt;&lt;td&gt;cup&lt;/td&gt;&lt;td&gt;large medium&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bottle&lt;/td&gt;&lt;td&gt;little&lt;/td&gt;&lt;td&gt;tin&lt;/td&gt;&lt;td&gt;sharp knife&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;blunt&lt;/td&gt;&lt;td&gt;knife&lt;/td&gt;&lt;td&gt;box&lt;/td&gt;&lt;td&gt;fork&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;glass&lt;/td&gt;&lt;td&gt;spoon&lt;/td&gt;&lt;td&gt;on shelf&lt;/td&gt;&lt;td&gt;desk&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;table&lt;/td&gt;&lt;td&gt;plate&lt;/td&gt;&lt;td&gt;cupboard&lt;/td&gt;&lt;td&gt;cigarette&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;television TV&lt;/td&gt;&lt;td&gt;floor carpet cup&lt;/td&gt;&lt;td&gt;dressing table&lt;/td&gt;&lt;td&gt;magazine&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bed&lt;/td&gt;&lt;td&gt;newspaper&lt;/td&gt;&lt;td&gt;stereo&lt;/td&gt;&lt;td&gt;Mrs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;kitchen&lt;/td&gt;&lt;td&gt;refrigerator&lt;/td&gt;&lt;td&gt;right left&lt;/td&gt;&lt;td&gt;electric&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cooker&lt;/td&gt;&lt;td&gt;middle&lt;/td&gt;&lt;td&gt;of room&lt;/td&gt;&lt;td&gt;living room&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;near&lt;/td&gt;&lt;td&gt;window&lt;/td&gt;&lt;td&gt;armchair&lt;/td&gt;&lt;td&gt;door&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;picture&lt;/td&gt;&lt;td&gt;wall&lt;/td&gt;&lt;td&gt;trousers&lt;/td&gt;&lt;td&gt;shut&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bedroom&lt;/td&gt;&lt;td&gt;untidy&lt;/td&gt;&lt;td&gt;open&lt;/td&gt;&lt;td&gt;air&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;put&lt;/td&gt;&lt;td&gt;clothes&lt;/td&gt;&lt;td&gt;wardrobe&lt;/td&gt;&lt;td&gt;dust&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sweep&lt;/td&gt;&lt;td&gt;read&lt;/td&gt;&lt;td&gt;sharpen&lt;/td&gt;&lt;td&gt;put on&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;take off&lt;/td&gt;&lt;td&gt;turn on&lt;/td&gt;&lt;td&gt;turn off&lt;/td&gt;&lt;td&gt;garden&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;under&lt;/td&gt;&lt;td&gt;tree&lt;/td&gt;&lt;td&gt;climb&lt;/td&gt;&lt;td&gt;who&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;run&lt;/td&gt;&lt;td&gt;grass&lt;/td&gt;&lt;td&gt;after&lt;/td&gt;&lt;td&gt;across&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;letter&lt;/td&gt;&lt;td&gt;basket&lt;/td&gt;&lt;td&gt;eat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;bone&lt;/td&gt;&lt;td&gt;tooth-teeth&lt;/td&gt;&lt;td&gt;cook   meal&lt;/td&gt;&lt;td&gt;drink&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;milk&lt;/td&gt;&lt;td&gt;tap&lt;/td&gt;&lt;td&gt;fly&lt;/td&gt;&lt;td&gt;day&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sky&lt;/td&gt;&lt;td&gt;cloud&lt;/td&gt;&lt;td&gt;sun  shine&lt;/td&gt;&lt;td&gt;with&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;family&lt;/td&gt;&lt;td&gt;walk&lt;/td&gt;&lt;td&gt;over&lt;/td&gt;&lt;td&gt;bridge   over&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;river&lt;/td&gt;&lt;td&gt;ship&lt;/td&gt;&lt;td&gt;aeroplane&lt;/td&gt;&lt;td&gt;sleep  sleeping&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;shave  shaving&lt;/td&gt;&lt;td&gt;cry   crying&lt;/td&gt;&lt;td&gt;wash  washing&lt;/td&gt;&lt;td&gt;wait   waiting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;jump  jumping&lt;/td&gt;&lt;td&gt;photograph&lt;/td&gt;&lt;td&gt;village&lt;/td&gt;&lt;td&gt;valley&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;hill&lt;/td&gt;&lt;td&gt;another&lt;/td&gt;&lt;td&gt;wife husband&lt;/td&gt;&lt;td&gt;bank&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;water&lt;/td&gt;&lt;td&gt;swim&lt;/td&gt;&lt;td&gt;building&lt;/td&gt;&lt;td&gt;park&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;between&lt;/td&gt;&lt;td&gt;along&lt;/td&gt;&lt;td&gt;into   out of&lt;/td&gt;&lt;td&gt;beside   near&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;under   over&lt;/td&gt;&lt;td&gt;in    on&lt;/td&gt;&lt;td&gt;off    onto&lt;/td&gt;&lt;td&gt;work&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;hard&lt;/td&gt;&lt;td&gt;make&lt;/td&gt;&lt;td&gt;bookcase&lt;/td&gt;&lt;td&gt;hammer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;paint&lt;/td&gt;&lt;td&gt;pink&lt;/td&gt;&lt;td&gt;favourite&lt;/td&gt;&lt;td&gt;homework&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;listen&lt;/td&gt;&lt;td&gt;dish-dishes&lt;/td&gt;&lt;td&gt;front&lt;/td&gt;&lt;td&gt;careful&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vase&lt;/td&gt;&lt;td&gt;drop&lt;/td&gt;&lt;td&gt;flower&lt;/td&gt;&lt;td&gt;show&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;send&lt;/td&gt;&lt;td&gt;take&lt;/td&gt;&lt;td&gt;cheese&lt;/td&gt;&lt;td&gt;bread&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;soap&lt;/td&gt;&lt;td&gt;chocolate&lt;/td&gt;&lt;td&gt;sugar&lt;/td&gt;&lt;td&gt;coffee&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;tea&lt;/td&gt;&lt;td&gt;tobacco&lt;/td&gt;&lt;td&gt;bird&lt;/td&gt;&lt;td&gt;of course&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;kettle&lt;/td&gt;&lt;td&gt;behind&lt;/td&gt;&lt;td&gt;teapot&lt;/td&gt;&lt;td&gt;now&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;find&lt;/td&gt;&lt;td&gt;boil&lt;/td&gt;&lt;td&gt;boss&lt;/td&gt;&lt;td&gt;minute&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ask&lt;/td&gt;&lt;td&gt;handwriting&lt;/td&gt;&lt;td&gt;terrible&lt;/td&gt;&lt;td&gt;lift&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cake&lt;/td&gt;&lt;td&gt;biscuit&lt;/td&gt;&lt;td&gt;like&lt;/td&gt;&lt;td&gt;want&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;fresh&lt;/td&gt;&lt;td&gt;egg&lt;/td&gt;&lt;td&gt;butter&lt;/td&gt;&lt;td&gt;pure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;honey&lt;/td&gt;&lt;td&gt;ripe&lt;/td&gt;&lt;td&gt;banana&lt;/td&gt;&lt;td&gt;jam&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sweet&lt;/td&gt;&lt;td&gt;orange&lt;/td&gt;&lt;td&gt;Scotch&lt;/td&gt;&lt;td&gt;whisky&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;choice&lt;/td&gt;&lt;td&gt;apple&lt;/td&gt;&lt;td&gt;wine&lt;/td&gt;&lt;td&gt;beer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;blackboard&lt;/td&gt;&lt;td&gt;butcher&lt;/td&gt;&lt;td&gt;meat&lt;/td&gt;&lt;td&gt;beef&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;lamb&lt;/td&gt;&lt;td&gt;pork&lt;/td&gt;&lt;td&gt;husband&lt;/td&gt;&lt;td&gt;steak&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;mince&lt;/td&gt;&lt;td&gt;chicken&lt;/td&gt;&lt;td&gt;tell&lt;/td&gt;&lt;td&gt;truth&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;
</content:encoded><category>category:资源</category></item><item><title>英语学习记录 第二幕</title><link>https://www.smallmaple.com/en/post/e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95--e7-ac-ac-e4-ba-8c-e5-b9-95</link><guid isPermaLink="false">en:e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95--e7-ac-ac-e4-ba-8c-e5-b9-95</guid><description>
现在进行时 含义：一个动作现在正在进行


现在进行时：肯定句结构：主+am/is/are+doing(v.ing 现在分词)am/is/are+doing1 v.+ing: eating/opening/reading2 She is reading a</description><pubDate>Sat, 11 Jan 2025 08:18:01 GMT</pubDate><content:encoded>
&lt;h3&gt;现在进行时 含义：一个动作现在正在进行&lt;/h3&gt;


&lt;p&gt;现在进行时：肯定句&lt;br /&gt;结构：主+am/is/are+doing&lt;br /&gt;(v.ing 现在分词)&lt;br /&gt;am/is/are+doing&lt;br /&gt;1 v.+ing: eating/opening/reading&lt;br /&gt;2 She is reading a book.&lt;br /&gt;am/is/are+doing&lt;br /&gt;1 去e+ing(e不发音)&lt;br /&gt;2 come-coming/make-making/&lt;br /&gt;dance-dancing&lt;br /&gt;3 They are dancing.&lt;br /&gt;am/is/are+doing&lt;br /&gt;1 双写 + ing&lt;br /&gt;2 run-running/sit-sitting/swim-&lt;br /&gt;swimming&lt;br /&gt;3 They are running on the street.&lt;/p&gt;


&lt;p&gt;现在进行时：否定句&lt;br /&gt;结构: 主+am/is/are+not+doing&lt;br /&gt;She is not reading books.&lt;br /&gt;She is not making the bed.&lt;br /&gt;They are not swimming.&lt;/p&gt;


&lt;p&gt;现在进行时：一般疑问句&lt;br /&gt;结构: am/is/are(提句首)+主+doing?&lt;br /&gt;1 Is she opening the door?&lt;br /&gt;2 Yes, she is.&lt;br /&gt;1 Are they sitting on the floor?&lt;br /&gt;2 Yes, they are.&lt;br /&gt;1 Is she turning off the phone?&lt;br /&gt;2 Yes, she is.&lt;/p&gt;


&lt;p&gt;现在进行时：特殊疑问句&lt;br /&gt;结构: What+am/is/are+主+doing?&lt;br /&gt;1 What are they doing?&lt;br /&gt;2 Are they dancing?&lt;br /&gt;3 Yes, they are dancing.&lt;br /&gt;1 What are they doing?&lt;br /&gt;2 Are they reading a book?&lt;br /&gt;3 Yes, they are reading a book.&lt;br /&gt;1 What is she doing?&lt;br /&gt;2 Is she running?&lt;br /&gt;3 Yes, she is running.&lt;/p&gt;


&lt;h3&gt;who 特殊疑问句 对主语提问，直接用特殊疑问词替代主语&lt;/h3&gt;


&lt;p&gt;Tim is climbing the tree.&lt;br /&gt;Who is climbing the tree?&lt;/p&gt;


&lt;h3&gt;prep. 介词&lt;/h3&gt;


&lt;p&gt;between prep.&lt;br /&gt;/ b ɪ ˈ t w i ː n /&lt;br /&gt;The baby is sleeping between his parents.&lt;/p&gt;


&lt;p&gt;into out of&lt;br /&gt;/ ˈ ɪ n t u ː /&lt;br /&gt;What is his wife doing?&lt;br /&gt;She is walking into a shop.&lt;br /&gt;What are the children doing?&lt;br /&gt;The children are running out of school.&lt;/p&gt;


&lt;p&gt;along across&lt;br /&gt;/ ə ˈ l ɒ ŋ / / ə ˈ k r ɒ s /&lt;br /&gt;What are they doing?&lt;br /&gt;They are walking along the river.&lt;br /&gt;What are they doing?&lt;br /&gt;They are swimming across the river.&lt;/p&gt;


&lt;p&gt;beside near&lt;br /&gt;/ b ɪ ˈ s a ɪ d /&lt;br /&gt;The left man is sitting beside the woman.&lt;br /&gt;The right man is sitting near the woman.&lt;br /&gt;What is her daughter doing?&lt;br /&gt;She is reading a book beside the window.&lt;br /&gt;Where are they?&lt;br /&gt;They are near the H building.&lt;br /&gt;What are they doing?&lt;br /&gt;They are waiting for a bus.&lt;/p&gt;


&lt;p&gt;under over&lt;br /&gt;What is the ship doing?&lt;br /&gt;The ship is going under the bridge.&lt;br /&gt;What are the planes doing?&lt;br /&gt;They are flying over the bridge.&lt;/p&gt;


&lt;p&gt;in on&lt;br /&gt;What is Susan doing?&lt;br /&gt;She is sitting on the floor.&lt;br /&gt;What are your grandparents doing?&lt;br /&gt;They are sitting in the park.&lt;br /&gt;&lt;br /&gt;off onto&lt;br /&gt;What are they doing?&lt;br /&gt;They are jumping off the wall.&lt;br /&gt;What is he doing?&lt;br /&gt;He is jumping onto his car.&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;
</content:encoded><category>category:资源</category></item><item><title>英语学习记录</title><link>https://www.smallmaple.com/en/post/e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95</link><guid isPermaLink="false">en:e8-8b-b1-e8-af-ad-e5-ad-a6-e4-b9-a0-e8-ae-b0-e5-bd-95</guid><description>
一般疑问句


This is my handbag.Is this my handbag?Is this your handbag?


这是我的雨伞。This is my umbrella.这不是我的雨伞。This not is my umbrella.


a an 一个 位置：a/an</description><pubDate>Sat, 11 Jan 2025 08:04:44 GMT</pubDate><content:encoded>
&lt;h3&gt;一般疑问句&lt;/h3&gt;


&lt;p&gt;This is my handbag.&lt;br /&gt;Is this my handbag?&lt;br /&gt;Is this your handbag?&lt;/p&gt;


&lt;p&gt;这是我的雨伞。&lt;br /&gt;This is my umbrella.&lt;br /&gt;这不是我的雨伞。&lt;br /&gt;This not is my umbrella.&lt;/p&gt;


&lt;h3&gt;a an 一个 位置：a/an + n. Leo is a teacher.&lt;/h3&gt;


&lt;p&gt;a an+n.&lt;br /&gt;a+n. (首音标是辅音音标)&lt;br /&gt;an+n. (首音标是元音音标)&lt;br /&gt;而非字母&lt;/p&gt;


&lt;h3&gt;特殊疑问句 = 特殊疑问词 + 一般疑问句 (去掉答案)&lt;/h3&gt;


&lt;p&gt;特殊疑问句-where&lt;br /&gt;She is from Italy.&lt;br /&gt;Is she from Italy?&lt;br /&gt;Where is she from?&lt;/p&gt;


&lt;p&gt;How 特殊疑问句&lt;br /&gt;She is ok.&lt;br /&gt;Is she ok?&lt;br /&gt;How is she?&lt;/p&gt;


&lt;p&gt;Whose 引导的特殊疑问句 含义：谁的&lt;br /&gt;This is her dress.&lt;br /&gt;Is this her dress?&lt;br /&gt;Whose dress is this?&lt;br /&gt;Whose is this dress?&lt;/p&gt;


&lt;p&gt;What 引导的特殊疑问句&lt;br /&gt;My name is Leo.&lt;br /&gt;Is your name Leo?&lt;br /&gt;What is your name?&lt;/p&gt;


&lt;h3&gt;n.+’s 含义——谁的&lt;/h3&gt;


&lt;p&gt;This is Leo’s pen&lt;/p&gt;


&lt;h3&gt;What colour 特殊疑问句&lt;/h3&gt;


&lt;p&gt;Her new dress is green.&lt;br /&gt;Is her new dress green?&lt;br /&gt;What colour is her new dress?&lt;/p&gt;


&lt;h3&gt;复数变化规则&lt;/h3&gt;


&lt;p&gt;n. 单数/复数 规则 1.直接加s friend—friends&lt;/p&gt;


&lt;p&gt;n. 单数/复数 规则 2.以字母 s, o, x, ch, sh 结尾的单词加-es.&lt;/p&gt;


&lt;p&gt;名词复数：以 f/fe 结尾的&lt;br /&gt;把 f/fe 变成 v 再加-es 读/vz/&lt;/p&gt;


&lt;p&gt;名词复数：元音字母+y结尾的&lt;br /&gt;直接+s&lt;/p&gt;


&lt;p&gt;名词复数：辅音字母+y结尾的&lt;br /&gt;变 y 为 i 再加-es 读/z]/&lt;/p&gt;


&lt;p&gt;Where 特殊疑问句&lt;br /&gt;含义：哪里?&lt;br /&gt;特殊疑问句 =&lt;br /&gt;特殊疑问词 + 一般疑问句&lt;br /&gt;(去掉答案)&lt;/p&gt;


&lt;h3&gt;give sb. sth.&lt;/h3&gt;


&lt;p&gt;food&lt;br /&gt;give _ some food. Please!&lt;br /&gt;water&lt;br /&gt;give _ some water. Please!&lt;/p&gt;


&lt;h3&gt;某地有某物/人&lt;/h3&gt;


&lt;p&gt;肯定句: There be+a/an+某物+地点&lt;br /&gt;There is a table in the middle of the room.&lt;br /&gt;There is an electric cooker in the kitchen.&lt;/p&gt;


&lt;p&gt;否定句: There be+not+a/an+某物 + 地点&lt;br /&gt;There isn’t an electric cooker in this room.&lt;/p&gt;


&lt;p&gt;一般疑问句: be 提句首&lt;br /&gt;Is there an electric cooker in this room?&lt;/p&gt;


&lt;h3&gt;How many 特殊疑问句  含义：多少&lt;/h3&gt;


&lt;p&gt;How many&lt;br /&gt;1 There are three armchairs in the&lt;br /&gt;living room.&lt;br /&gt;2 Are there three armchairs in the&lt;br /&gt;living room?&lt;br /&gt;3 How many armchairs are there in&lt;br /&gt;the living room?&lt;/p&gt;


&lt;p&gt;How many&lt;br /&gt;1 There are three cats in the picture.&lt;br /&gt;2 Are there three cats in the picture?&lt;br /&gt;3 How many cats are there in the&lt;br /&gt;picture?&lt;/p&gt;


&lt;h3&gt;some VS any 同：“一些” 异: some 肯定句 VS any 否定 / 疑问句&lt;/h3&gt;


&lt;p&gt;There are some pens on the table.&lt;br /&gt;There aren’t any students in the classroom.&lt;br /&gt;Are there any boxes in the kitchen?&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>英语笔记</title><link>https://www.smallmaple.com/en/post/e8-8b-b1-e8-af-ad-e7-ac-94-e8-ae-b0</link><guid isPermaLink="false">en:e8-8b-b1-e8-af-ad-e7-ac-94-e8-ae-b0</guid><description>
疑惑解答
表达方式用法语气示例句子Would you like用于更为礼貌、正式的请求或提供建议，通常用于更客气或正式的语境。更加礼貌、请求或建议的语气Would you like some tea?（您想喝点茶吗？）Want用于表达强烈的需求或欲望，语气比 &quot;Would you like&quot;</description><pubDate>Wed, 01 Jan 2025 08:05:46 GMT</pubDate><content:encoded>
疑惑解答
&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;表达方式&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;用法&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;语气&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;示例句子&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Would you like&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;用于更为礼貌、正式的请求或提供建议，通常用于更客气或正式的语境。&lt;/td&gt;&lt;td&gt;更加礼貌、请求或建议的语气&lt;/td&gt;&lt;td&gt;Would you like some tea?（您想喝点茶吗？）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Want&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;用于表达强烈的需求或欲望，语气比 &quot;Would you like&quot; 更直接。&lt;/td&gt;&lt;td&gt;直接、表述需求或欲望的语气&lt;/td&gt;&lt;td&gt;I want a cup of coffee.（我想要一杯咖啡。）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;



&lt;p&gt;&lt;/p&gt;


&lt;div&gt;
&lt;div&gt;
动词归纳
&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;动词&lt;/td&gt;&lt;td&gt;用法&lt;/td&gt;&lt;td&gt;例子&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Open&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;打开物理物品&lt;/td&gt;&lt;td&gt;Open the door, open the book&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Turn on&lt;/td&gt;&lt;td&gt;启动设备（通常需要电力）&lt;/td&gt;&lt;td&gt;Turn on the light, turn on the TV&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Close&lt;/td&gt;&lt;td&gt;关闭物理物品&lt;/td&gt;&lt;td&gt;Close the door, close the book&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Put out&lt;/td&gt;&lt;td&gt;扑灭火源或熄灭光源&lt;/td&gt;&lt;td&gt;Put out the fire, put out the candle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Clean&lt;/td&gt;&lt;td&gt;清洁物体&lt;/td&gt;&lt;td&gt;Clean the table, clean the floor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Wash&lt;/td&gt;&lt;td&gt;用水清洗物体&lt;/td&gt;&lt;td&gt;Wash the dishes, wash your hands&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Empty&lt;/td&gt;&lt;td&gt;清空容器或空间&lt;/td&gt;&lt;td&gt;Empty the box, empty the bottle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Pour out&lt;/td&gt;&lt;td&gt;倒出液体&lt;/td&gt;&lt;td&gt;Pour out the water, pour out the juice&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;/p&gt;


&lt;div&gt;
方位介词
&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;介词&lt;/td&gt;&lt;td&gt;含义&lt;/td&gt;&lt;td&gt;例子&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;between&lt;/td&gt;&lt;td&gt;在两者之间&lt;/td&gt;&lt;td&gt;The ball is between the chairs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;into&lt;/td&gt;&lt;td&gt;向内; 进入&lt;/td&gt;&lt;td&gt;He walked into the room.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;out of&lt;/td&gt;&lt;td&gt;向外; 离开&lt;/td&gt;&lt;td&gt;She ran out of the house.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;along&lt;/td&gt;&lt;td&gt;沿着&lt;/td&gt;&lt;td&gt;They walked along the river.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;across&lt;/td&gt;&lt;td&gt;横跨; 从一边到另一边&lt;/td&gt;&lt;td&gt;He swam across the lake.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;beside&lt;/td&gt;&lt;td&gt;在旁边&lt;/td&gt;&lt;td&gt;There&apos;s a chair beside the table.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;near&lt;/td&gt;&lt;td&gt;靠近&lt;/td&gt;&lt;td&gt;The school is near my house.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;under&lt;/td&gt;&lt;td&gt;在下面&lt;/td&gt;&lt;td&gt;The book is under the bed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;over&lt;/td&gt;&lt;td&gt;在上方; 越过&lt;/td&gt;&lt;td&gt;The plane flew over the city.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;off&lt;/td&gt;&lt;td&gt;离开; 从....上掉下&lt;/td&gt;&lt;td&gt;He jumped off the wall.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;onto&lt;/td&gt;&lt;td&gt;向.....之上&lt;/td&gt;&lt;td&gt;She climbed onto the roof.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;/div&gt;


&lt;p&gt;&lt;/p&gt;


&lt;div&gt;
&lt;div&gt;
不可数名词
&lt;figure&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;量词&lt;/td&gt;&lt;td&gt;中文含义&lt;/td&gt;&lt;td&gt;用法&lt;/td&gt;&lt;td&gt;解释&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a piece of&lt;/td&gt;&lt;td&gt;一片&lt;/td&gt;&lt;td&gt;bread, paper&lt;/td&gt;&lt;td&gt;用于不可数名词和一些可数名词（如纸张、面包等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a slice of&lt;/td&gt;&lt;td&gt;一片&lt;/td&gt;&lt;td&gt;cake&lt;/td&gt;&lt;td&gt;用于切片的食物 (如蛋糕)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a bar of&lt;/td&gt;&lt;td&gt;一块&lt;/td&gt;&lt;td&gt;chocolate&lt;/td&gt;&lt;td&gt;用于条形物品 (如巧克力)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a bottle of&lt;/td&gt;&lt;td&gt;一瓶&lt;/td&gt;&lt;td&gt;milk, tea, water, ink&lt;/td&gt;&lt;td&gt;用于液体或液体类物品 (如牛奶, 茶, 墨水)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a cup of&lt;/td&gt;&lt;td&gt;一杯&lt;/td&gt;&lt;td&gt;milk, tea, coffee, water&lt;/td&gt;&lt;td&gt;用于饮品类液体 (如牛奶, 茶, 咖啡, 水)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a tin of&lt;/td&gt;&lt;td&gt;一罐&lt;/td&gt;&lt;td&gt;coffee, tea&lt;/td&gt;&lt;td&gt;用于罐装物品 (如咖啡, 茶)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a loaf of&lt;/td&gt;&lt;td&gt;一条&lt;/td&gt;&lt;td&gt;bread&lt;/td&gt;&lt;td&gt;用于面包类物品&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a pound of&lt;/td&gt;&lt;td&gt;一磅&lt;/td&gt;&lt;td&gt;tobacco, coffee, tea, cake, bread, water, ink, chocolate, paper, beer, sugar&lt;/td&gt;&lt;td&gt;用于重量单位 (如烟草, 咖啡, 茶, 蛋糕等)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a pint of&lt;/td&gt;&lt;td&gt;一品脱&lt;/td&gt;&lt;td&gt;beer, milk&lt;/td&gt;&lt;td&gt;用于液体类物品 (如啤酒, 牛奶)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a glass of&lt;/td&gt;&lt;td&gt;一杯&lt;/td&gt;&lt;td&gt;sugar&lt;/td&gt;&lt;td&gt;用于液体类物品 (如牛奶, 咖啡, 茶, 墨水)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;/p&gt;
</content:encoded><category>category:网络</category></item><item><title>Sakurairo美化笔记</title><link>https://www.smallmaple.com/en/post/sakurairo-e7-be-8e-e5-8c-96-e7-ac-94-e8-ae-b0</link><guid isPermaLink="false">en:sakurairo-e7-be-8e-e5-8c-96-e7-ac-94-e8-ae-b0</guid><description>
自定义代码


.author-profile .profile img {
    width: 30px;
    height: 30px;
}

.entry-content p a {
  padding-bottom: 5px; /* 为下划线预留空间 */
  color:</description><pubDate>Tue, 31 Dec 2024 12:04:41 GMT</pubDate><content:encoded>
&lt;h3&gt;自定义代码&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;.author-profile .profile img {
    width: 30px;
    height: 30px;
}

.entry-content p a {
  padding-bottom: 5px; /* 为下划线预留空间 */
  color: #00bfff; /* 默认链接颜色为天蓝色 */
  position: relative; /* 为伪元素创建定位基准 */
  display: inline;
  cursor: pointer; /* 鼠标悬停时显示帮助指针 */
}

.entry-content p a:hover {
  text-decoration: none;
  color: #007fff; /* 鼠标悬停时链接文字变为蓝色 */
}

.entry-content p a::after {
  /* 这里插入你提供的CSS代码 */
  content: &quot;&quot;;
  position: absolute;
  width: 100%;
  transform: scaleX(0);
  height: 2px;
  bottom: 0;
  left: 0;
  background-color: #007fff;
  transform-origin: bottom right;
  transition: transform 0.25s ease-out;
}

.entry-content p a:hover::after {
  transform: scaleX(1); /* hover时展开 */
  transform-origin: bottom left; /* 改变起点实现方向变化 */
}

/* 表格详细信息居中 */
.wp-block-details summary {
		display: flex;
		justify-content: center;
		font-size: 20px
}

body .is-layout-flex {
		justify-content: center;
}

.wp-container-core-group-is-layout-1 {
align-items: center !important;
}

/* 文章标题段落添加外左边距 */
.single-header .entry-census.has-splitter {
    margin-left: 5px;
}&lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;主题内部代码&lt;/h3&gt;


&lt;p&gt;文章标题下划线动画位置：inc\decorate.php&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;/*标题横线动画*/

@media (min-width: 860px) {
    /* 1. 确保 h1 具备相对定位，作为线条的参考系 */
    .single-center .single-header h1.entry-title {
        position: relative; 
        /* 注意：这里不要再写 background-image 了 */
    }

    /* 2. 召唤一个真实的伪元素盒子来当线条 */
    .single-center .single-header h1.entry-title::after {
        content: &apos;&apos;;
        position: absolute;
        bottom: -8px; /* 紧贴标题块的最底部 */
        left: 0;
        
        /* 决定线条的厚度和圆角 */
        height: 10px; /* 你可以自由调整线条粗细 */
        border-radius: 10px; /* 这里就是你心心念念的圆角！ */
        
        /* 核心魔法：继承原版的动态主题色，并实现 50% 半透明 */
        background-color: color-mix(in srgb, var(--article-theme-highlight, var(--theme-skin-matching)) 50%, transparent);
        
        /* 初始状态：宽度为0，准备执行动画 */
        width: 0;
        animation: lineWidth 2s ease forwards;
        
        /* 放在文字底层避免遮挡文字 */
        z-index: -1; 
    }
}

/* 3. 控制 ::after 盒子的宽度伸展 */
@keyframes lineWidth {
    0% {
        width: 0;
    }
    100% {
        width: 100%; /* 如果不想占满全宽，可以改成你原版写的 20% 或 30% */
    }
}&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;评论区标题下划线动画位置：style.css&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;h3#comments-list-title::after {
	content: &apos;&apos;;
	position: absolute;
	bottom: -15px;
        left: 0%;
	width: 100%;
	height: 0.7em;
	background-color: var(--article-theme-highlight,var(--theme-skin-matching)) !important;
	opacity: 0.4;
	z-index: 0;
	border-radius: 30px;
	transition: all 0.3s ease;
}

h3#comments-list-title:hover::after {
	width: 85%;
	opacity: 0.7;
}&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;二级标题下划线动画位置：css\content-style\sakura.css&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;.entry-content h2:after {
    content: &apos;&apos;;
    position: absolute;
    bottom: -20px !important;
    left: 30%;
    right: 0;
    width: 70%;
    height: 0.7em;
    background-color: var(--article-theme-highlight,var(--theme-skin-matching));
    opacity: 0.4;
    z-index: 0;
    border-radius: 30px;
    transition: all 0.3s ease;
}

.entry-content h2:hover:after {
	width: 85%;
  	left: 15%;
	opacity: 0.7;
}&lt;/code&gt;&lt;/pre&gt;
</content:encoded><category>category:主题</category></item><item><title>工作笔记</title><link>https://www.smallmaple.com/en/post/e5-b7-a5-e4-bd-9c-e7-ac-94-e8-ae-b0</link><guid isPermaLink="false">en:e5-b7-a5-e4-bd-9c-e7-ac-94-e8-ae-b0</guid><description>
Excel常用函数



=VLOOKUP()


=LENB()


=TEXTSPLIT()


=CHOOSE(RANDBETWEEN(1,4),””)


$A$3:$A$20000,$D$3:$D$20000,$G$3:$G$20000,$J$3:$J$20000</description><pubDate>Tue, 31 Dec 2024 03:11:29 GMT</pubDate><content:encoded>
&lt;h1&gt;Excel常用函数&lt;/h1&gt;


&lt;ul&gt;
&lt;li&gt;=VLOOKUP()&lt;/li&gt;


&lt;li&gt;=LENB()&lt;/li&gt;


&lt;li&gt;=TEXTSPLIT()&lt;/li&gt;


&lt;li&gt;=CHOOSE(RANDBETWEEN(1,4),””)&lt;/li&gt;


&lt;li&gt;$A$3:$A$20000,$D$3:$D$20000,$G$3:$G$20000,$J$3:$J$20000&lt;/li&gt;


&lt;li&gt;=ISNUMBER(MATCH(A3,特殊链接!$E$2:$E$10000,0)) + ISNUMBER(MATCH(D3,特殊链接!$E$2:$E$10000,0)) + ISNUMBER(MATCH(G3,特殊链接!$E$2:$E$10000,0)) + ISNUMBER(MATCH(J3,特殊链接!$E$2:$E$10000,0)) &amp;gt; 0&lt;/li&gt;


&lt;li&gt;=OR(ISNUMBER(SEARCH(&quot;迪士尼&quot;,C2)), ISNUMBER(SEARCH(&quot;喜洋洋&quot;,C2)), ISNUMBER(SEARCH(&quot;原神&quot;,C2)), ISNUMBER(SEARCH(&quot;小蓝人&quot;,C2)), ISNUMBER(SEARCH(&quot;黑神话悟空&quot;,C2)),, ISNUMBER(SEARCH(&quot;恋与光&quot;,C2)))&lt;/li&gt;


&lt;li&gt;=IF(ISNUMBER(SEARCH(&quot;适用于&quot;,C2)),&quot;适用&quot;&amp;amp;SUBSTITUTE(C2,&quot;适用于&quot;,&quot;&quot;),IF(ISNUMBER(SEARCH(&quot;适用&quot;,C2)),&quot;适用&quot;&amp;amp;SUBSTITUTE(C2,&quot;适用&quot;,&quot;&quot;),&quot;适用&quot;&amp;amp;C2))&lt;/li&gt;


&lt;li&gt;=&quot;肤感：&quot; &amp;amp; SUMPRODUCT((&apos;肤感汇总表&apos;!H2:H100=&quot;FSAE&quot;)&lt;em&gt;(&apos;肤感汇总表&apos;!G2:G100=&quot;&quot;)) &amp;amp; &quot; &amp;amp; 透明：&quot; &amp;amp; SUMPRODUCT((&apos;透明汇总表&apos;!H2:H100=&quot;FSAE&quot;)&lt;/em&gt;(&apos;透明汇总表&apos;!G2:G100=&quot;&quot;))&lt;/li&gt;


&lt;li&gt;=&quot;透明：&quot; &amp;amp; SUMPRODUCT((&apos;透明汇总表&apos;!H:H=&quot;FSAE&quot;)*(&apos;透明汇总表&apos;!G:G=&quot;&quot;))&lt;/li&gt;


&lt;li&gt;=UNIQUE(FILTER(A2:A3, ISNUMBER(A2:A3)))&lt;/li&gt;


&lt;li&gt;=TOCOL(总表!A3:AC2000, 1)&lt;/li&gt;


&lt;li&gt;=SUM(OFFSET(FSAE!$A$1, 1, (COLUMN($AD$1)-1)+(ROW(D25)-ROW($D$25)), 302, 1))&lt;/li&gt;


&lt;li&gt;=LEFT(C2,MATCH(60,SCAN(0,MID(C2,SEQUENCE(LEN(C2)),1),LAMBDA(a,b,a+LENB(b)))))&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;/p&gt;


&lt;h1&gt;Photoshop快捷键&lt;/h1&gt;


&lt;ul&gt;
&lt;li&gt;新建图层: ctrl+shift+n&lt;/li&gt;


&lt;li&gt;图层移动: ctrl+[ ]&lt;/li&gt;


&lt;li&gt;导出为: ctrl+shift+alt+w&lt;/li&gt;


&lt;li&gt;关闭当前窗口: ctrl+w&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>category:网络</category></item><item><title>24G银河系中心图</title><link>https://www.smallmaple.com/en/post/24g-e9-93-b6-e6-b2-b3-e7-b3-bb-e4-b8-ad-e5-bf-83-e5-9b-be</link><guid isPermaLink="false">en:24g-e9-93-b6-e6-b2-b3-e7-b3-bb-e4-b8-ad-e5-bf-83-e5-9b-be</guid><description>
今天下载了一张传闻已久的银河系中心图,这是南欧天文观测站的科学家们12年发布的一张90亿像素的惊艳的银河系中央的照片。在这张分辨率为108500×81500的照片上, 一共有8400万颗星星。而这张图片的大小达到了惊人的24.6GB。</description><pubDate>Sun, 31 May 2020 08:01:00 GMT</pubDate><content:encoded>
&lt;p&gt;今天下载了一张传闻已久的银河系中心图,这是南欧天文观测站的科学家们12年发布的一张90亿像素的惊艳的银河系中央的照片。在这张分辨率为108500×81500的照片上, 一共有8400万颗星星。而这张图片的大小达到了惊人的24.6GB。&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&quot;https://img.smallmaple.com/blog/Illustrations/originals_webp/175016_original.webp&quot;&gt;
        &lt;img src=&quot;https://img.smallmaple.com/blog/Illustrations/previews/175016_preview.jpg&quot; alt=&quot;图一&quot; /&gt;
    &lt;/a&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;a href=&quot;https://img.smallmaple.com/blog/Illustrations/originals_webp/175150_original.webp&quot;&gt;
        &lt;img src=&quot;https://img.smallmaple.com/blog/Illustrations/previews/175150_preview.jpg&quot; alt=&quot;图二&quot; /&gt;
    &lt;/a&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;a href=&quot;https://img.smallmaple.com/blog/Illustrations/originals_webp/175430_original.webp&quot;&gt;
        &lt;img src=&quot;https://img.smallmaple.com/blog/Illustrations/previews/175430_preview.jpg&quot; alt=&quot;图三&quot; /&gt;
    &lt;/a&gt;
&lt;/figure&gt;


&lt;p&gt;官网地址: &lt;a href=&quot;https://www.eso.org/public/images/eso1242a/&quot;&gt;https://www.eso.org/public/images/eso1242a/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;在线观看地址: &lt;a href=&quot;https://www.eso.org/public/images/eso1242a/zoomable/&quot;&gt;https://www.eso.org/public/images/eso1242a/zoomable/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;下载地址: &lt;a href=&quot;https://cdn2.eso.org/images/original/eso1242a.psb&quot;&gt;https://cdn2.eso.org/images/original/eso1242a.psb&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>category:资源</category></item></channel></rss>