飞书配置表数据同步到数据库中
这是我的从飞书取数据的代码
def get_employee_from_feishu():staff_setting = settings.FEISHU_SETTING["sales_order"]["employee"]app_token = staff_setting ["app_token"]table_id = staff_setting ["table_id"]page_token = NonehasMore = Trueemployees = {}while hasMore:staff_data = bitable_service.fetch(app_token, table_id, page_token=page_token)# 格式参考warehouse.jsonhasMore = staff_data["data"]["has_more"]rows = staff_data["data"]["items"]for row in rows:fields = row["fields"]if "姓名" in fields:employee = {"employee_id": fields.get("工号"),"name": fields.get("姓名"),"position": fields.get("人员.职务"),"department": fields.get("部门名"),}employees[employee["name"]] = employeeif not hasMore:breakpage_token = staff_data["data"].get("page_token")return employees
这是我的数据库模型
from django.db import modelsclass EmployeeModel(models.Model):employee_id = models.CharField(max_length=100, unique=True, null=True, blank=True, verbose_name="工号")name = models.CharField(max_length=64, null=True, blank=True, verbose_name="姓名")position = models.CharField(max_length=100, null=True, blank=True, verbose_name="人员.职务")department = models.CharField(max_length=100, null=True, blank=True, verbose_name="部门名")class Meta:db_table = "xss_employee"verbose_name = "员工信息"verbose_name_plural = "员工信息"def __str__(self):return self.name
这是我将飞书数据进入数据库的代码
from core.models import EmployeeModel
from eccang.services.base_data_fetch_service import (get_product_category_from_feishu,get_warehouse_from_feishu,get_employee_from_feishu,get_country_from_feishu,get_monthly_target_from_feishu,get_position_target_from_feishu,
)def sync_employee_to_db():data_dict = get_employee_from_feishu()for data in data_dict.values():if not data["employee_id"]:continue # 跳过无工号数据EmployeeModel.objects.update_or_create(employee_id=data["employee_id"],defaults={"name": data["name"],"position": data["position"],"department": data["department"],})
✅不错的地方
使用分页抓取飞书数据,防止数据量大时漏数据。使用 update_or_create,避免重复插入。过滤掉没有 employee_id 的记录,防止插入空主键。
🔍建议优化点
- 字段容错性检查
在访问字段时使用了 fields.get(),但在 position、department、employee_id 字段不是所有记录都存在时,可能得到 None。可以在构建 employee 字典时加默认值,避免报错或数据不一致:
employee = {"employee_id": fields.get("工号", "").strip(),"name": fields.get("姓名", "").strip(),"position": fields.get("人员.职务", "").strip(),"department": fields.get("部门名", "").strip(),
}
注意 .strip() 可避免导入数据库中的空格异常。
- 避免空姓名造成 key 重复覆盖
使用了 employees[employee[“name”]] = employee,这会以“姓名”作为 key,而如果出现多个同名员工,可能被覆盖,造成数据丢失。
建议改为用 employee_id 做 key,更稳妥:
employees[employee["employee_id"]] = employee
-
字段命名检查
使用的是字段名如 “人员.职务”,这是合法的,但建议在飞书中避免这种带点的字段名,因为它可能与 Python 字段语义混淆,或者将来你要做统一映射时会麻烦。 -
同步逻辑建议加日志(可选)
可以加一点日志输出,方便调试或上线监控:
import logging
logger = logging.getLogger(__name__)def sync_employee_to_db():data_dict = get_employee_from_feishu()created, updated, skipped = 0, 0, 0for data in data_dict.values():if not data["employee_id"]:skipped += 1continueobj, is_created = EmployeeModel.objects.update_or_create(employee_id=data["employee_id"],defaults={"name": data["name"],"position": data["position"],"department": data["department"],})if is_created:created += 1else:updated += 1logger.info(f"员工同步完成:新增 {created} 条,更新 {updated} 条,跳过 {skipped} 条")
✅ 总结
飞书分页抓取
✅
空值处理
⚠️ 建议加默认值 .get(…, “”).strip()
主键唯一性
⚠️ 建议用 employee_id 做 key
数据同步方式
✅ update_or_create 正确
日志与监控
⚠️ 建议加简单日志
字段命名规范性
⚠️ “人员.职务” 命名不够语义清晰,建议优化
下面是这段同步员工数据代码的详细结构分析,包括每一部分的职责、依赖关系、潜在问题和优化建议。
一、函数入口:sync_employee_to_db()
def sync_employee_to_db():
作用:
主函数,负责执行“从飞书多维表格获取员工数据 → 写入本地数据库”的全过程。
二、从飞书获取数据
data_dict = get_employee_from_feishu()
对应的函数:
def get_employee_from_feishu():staff_setting = settings.FEISHU_SETTING["sales_order"]["employee"]app_token = staff_setting ["app_token"]table_id = staff_setting ["table_id"]page_token = NonehasMore = Trueemployees = {}while hasMore:staff_data = bitable_service.fetch(app_token, table_id, page_token=page_token)hasMore = staff_data["data"]["has_more"]rows = staff_data["data"]["items"]for row in rows:fields = row["fields"]if "姓名" in fields:employee = {"employee_id": fields.get("工号"),"name": fields.get("姓名"),"position": fields.get("人员.职务"),"department": fields.get("部门名"),}employees[employee["name"]] = employeeif not hasMore:breakpage_token = staff_data["data"].get("page_token")return employees
作用:
调用 bitable_service.fetch() 与飞书 API 通信;
按页遍历所有员工数据;
将每条员工记录解析为字典格式;
最后以 “姓名” 为 key 构造一个员工字典并返回。
依赖项:
bitable_service.fetch():对飞书多维表格的 API 封装;
settings.FEISHU_SETTING:飞书的 App Token 和表格 ID 来自配置文件;
字段名称如 “工号”, “姓名”, “人员.职务” 是 Feishu 表格中的字段。
潜在问题:
employees[employee[“name”]] = employee:若员工同名会被覆盖;
若某行 fields 缺少必要字段,可能插入 None;
没有 .strip() 清洗字符串,可能出现数据不一致(如 "张三 " vs “张三”);
若飞书接口失败,未处理异常(建议加 try-except);
三、同步到数据库
for data in data_dict.values():if not data["employee_id"]:continue # 跳过无工号数据EmployeeModel.objects.update_or_create(employee_id=data["employee_id"],defaults={"name": data["name"],"position": data["position"],"department": data["department"],})
作用:
遍历每条员工数据;
以 “employee_id” 作为唯一键更新或插入 EmployeeModel;
若数据库中已存在对应 employee_id,则更新其他字段;
若不存在,则创建新记录。
优点:
update_or_create 可以自动处理“增”和“改”,逻辑清晰;
使用 “employee_id” 作为唯一键,符合业务设计;
建议优化:
增加日志记录,比如:新增了多少条、更新了多少条;
对于姓名为空或异常的数据可以加校验;
加异常处理,防止单条数据出错影响整个同步流程。
四、模型结构分析:EmployeeModel
class EmployeeModel(models.Model):employee_id = models.CharField(max_length=100, unique=True, null=True, blank=True, verbose_name="工号")name = models.CharField(max_length=64, null=True, blank=True, verbose_name="姓名")position = models.CharField(max_length=100, null=True, blank=True, verbose_name="人员.职务")department = models.CharField(max_length=100, null=True, blank=True, verbose_name="部门名")class Meta:db_table = "xss_employee"verbose_name = "员工信息"verbose_name_plural = "员工信息"def __str__(self):return self.name
字段解释:
字段名 类型 含义
employee_id CharField 员工工号,设为唯一键
name CharField 员工姓名
position CharField 职位/职务
department CharField 部门名称
建议:
如果业务上“工号”不可能为空,可以设置 null=False, blank=False;
添加 created_at、updated_at 字段,用于数据变更追踪;
可对 name 加索引提升查询效率(如果经常用 name 查询)。
五、完整建议汇总
数据来源字段容错 .get(“字段”, “”).strip(),避免出现空值和空格
唯一键选择 不建议用 name 做 dict key,推荐用 employee_id
字段覆盖 如果同名员工存在,当前写法会覆盖后者数据,应避免
接口容错 加 try-except 捕获 Feishu API 错误
数据变更记录 加入 日志记录(如新增几条,更新几条)
模型增强 建议增加时间戳字段(created_at, updated_at)
配置来源 建议统一放到 settings,例如字段映射配置等,便于维护
相关文章:
飞书配置表数据同步到数据库中
这是我的从飞书取数据的代码 def get_employee_from_feishu():staff_setting settings.FEISHU_SETTING["sales_order"]["employee"]app_token staff_setting ["app_token"]table_id staff_setting ["table_id"]page_token Noneh…...
Nacos源码—9.Nacos升级gRPC分析八
大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 14.gRPC简单介绍 12.gRPC服务端如何处理客户端的建立连接请求 (1)gRPC服务端是如何启动的 (2)connec…...
开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具
各位PDF处理小能手们!我跟你们说啊,今天要给大家介绍一款超牛的国产开源PDF处理工具,叫PDFPatcher,也叫PDF补丁丁。它就像一个PDF文档的超级修理工,专门解决PDF编辑、修复和管理的各种难题。 这软件的核心功能和特点&a…...
C++设计模式——单例模式
单例模式 方法1:C11 线程不安全懒汉模式(不推荐) 懒汉式单例模式在第一次使用时才创建实例,但这种方式在多线程环境下可能会出现问题。 class Singleton { private:static Singleton* instance; // 静态指针,用于存储…...
装饰器在Python中的作用及在PyTorchMMDetection中的实战应用
装饰器在Python中的作用 1. 装饰器是什么?为什么它很重要? 装饰器(Decorator)是Python中的一种高级语法,用于在不修改原函数代码的情况下,动态增强函数的功能。它的核心思想是**"装饰"现有函数*…...
时间序列预测建模的完整流程以及数据分析【学习记录】
文章目录 1.时间序列建模的完整流程2. 模型选取的和数据集2.1.ARIMA模型2.2.数据集介绍 3.时间序列建模3.1.数据获取3.2.处理数据中的异常值3.2.1.Nan值3.2.2.异常值的检测和处理(Z-Score方法) 3.3.离散度3.4.Z-Score3.4.1.概述3.4.2.公式3.4.3.Z-Score与…...
【工作记录】Kong Gateway入门篇之简介
1. 什么是 Kong Gateway? Kong Gateway 是一个开源的、云原生的 API 网关,专为现代微服务架构设计。它基于 Nginx 和 Lua 构建,提供了高性能、可扩展的 API 管理解决方案。Kong Gateway 不仅能够处理 API 请求的路由和负载均衡,还…...
华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
目录 一、鸿蒙电脑作为开发机的核心能力1. 硬件与系统架构2. 开发工具链支持 二、开发非鸿蒙应用的可行性分析1. 适配优势与局限性2. 生态限制 三、鸿蒙电脑的核心适用场景1. 推荐开发场景2. 目标用户群体3. 非推荐场景 四、未来生态演进与战略意义五、总结 一、鸿蒙电脑作为开…...
jackson-dataformat-xml引入使用后,响应体全是xml
解决方案: https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.servlet.config.annotation.Con…...
【deekseek】TCP Offload Engine
是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…...
Flannel Host-gw模式的优缺点
Host-gw 模式的特点、优缺点 优点 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。配置简单:只需配置…...
SD-HOST Controller design-----SD CLK 设计
hclk的分频电路,得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟:一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时,fifo_sd_clk等于hclk;当分频时候,div_counter开始计数,记到相应分频的时候…...
zabbix最新版本7.2超级详细安装部署(一)
如果文章对你有用,请留下痕迹在配置过程中有问题请及时留言,本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…...
BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(上)
文章目录 引言一、拓扑排序的背景二、BFS算法解决拓扑排序三、应用场景四、代码实现五、代码解释六、总结 引言 在这浩瀚如海的算法世界中,有一扇门,开启后通向了有序的领域。它便是拓扑排序,这个问题的解决方法犹如一场深刻的哲学思考&#…...
【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑
序言 在上篇文章中,我们完成了滚动条组件开发的前期准备工作,包括理论推导、布局规划和基础设置。现在,我们将把这些准备转化为实际代码,开启滚动条组件的具体开发之旅🌟。我们会详细阐述如何实现各项功能,…...
题海拾贝:P1833 樱花
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
集成钉钉消息推送功能
1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台:https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…...
texlive 与 Texmaker 安装
一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD ,点击 Texmaker_6.0.1_Win_x64.msi ,下载即可。 2、安装Texmaker 双击如下文件 若出现如下,点击更多信息 点击仍要运行 …...
Milvus(21):过滤搜索、范围搜索、分组搜索
1 过滤搜索 ANN 搜索能找到与指定向量嵌入最相似的向量嵌入。但是,搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件,这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤,将搜索范围从整个 Collections 缩小到只搜索符合指定过滤条件…...
AD PCB布局时常用的操作命令
1. 框选 往右下方框选:选中矩形接触到的对象(选中整体才会被选中) 往左上方框选:选中矩形接触到的对象(选中局部,也是选中整体) 线选:快捷键S,弹出界面: …...
[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...
分析Docker容器Jvm 堆栈GC信息
# 打印jvm启动参数 docker exec -ti <容器名> jcmd 1 VM.flags-XX:CICompilerCount3 -XX:InitialHeapSize1073741824 -XX:MaxHeapSize2147483648 -XX:MaxMetaspaceSize157286400 -XX:MaxNewSize715653120 -XX:MinHeapDeltaBytes524288 -XX:NewSize357564416 -XX:OldSize7…...
Java——集合基础
一、集合与数组的特点对比 1.集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 2.集合和数组的区别 共同点:都是存储数据的容器不同点:数组的容量是固定的,集合的容量是可变的 3.如果存储…...
spark MySQL数据库配置
Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接,需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码: 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…...
http断点续传
🛑 默认的 http.server(Python 的 SimpleHTTPRequestHandler)在某些版本和实现中并不可靠地支持 HTTP Range 请求(即断点续传)。 尤其在 Python 3.7~3.10 之间的某些版本中,这种支持是不完整或不可预测的。…...
# YOLOv3:基于 PyTorch 的目标检测模型实现
YOLOv3:基于 PyTorch 的目标检测模型实现 引言 YOLOv3(You Only Look Once)是一种流行的单阶段目标检测算法,它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性,使其在实时目标检测任…...
Mac修改hosts文件方法
Mac修改hosts文件方法 在 macOS 上修改 hosts 文件需要管理员权限 步骤 1:打开终端 通过 Spotlight 搜索(Command 空格)输入 Terminal,回车打开。或进入 应用程序 > 实用工具 > 终端。 步骤 2:备份 hosts 文件…...
构建你的第一个简单AI助手 - 入门实践
在当今AI迅速发展的时代,构建自己的AI助手不再是高不可攀的技术壁垒。即使对于刚接触AI开发的程序员,也可以利用现代大语言模型(LLM)API构建功能丰富的AI助手。本文将带您完成一个简单但实用的AI助手构建过程,帮助您在日常工作中提高效率。 …...
Qt在统信UOS及银河麒麟Kylin系统中进行软件开发的环境配置,打包发布和注意事项
前述 之前由于项目的产品需要,必须将原本Windows上的产品移植到信创环境,也就是现在的主流国产操作系统统信UOS及银河麒麟Kylin。 先大概讲下信创系统: 信创系统就像是中国自己打造的 “数字基建”,目的是让咱们国家的信息技术不…...
一个完整的项目示例:taro开发微信小程序
前一周完成了一个项目,体测成绩转换的工具,没做记录,。这次计划开发一个地图应用小程序,记录一下。方便给使用的人。 一、申请微信小程序,填写相应的信息,取得开发者ID。这个要给腾讯地图使用的。 二、申…...
二次封装 el-dialog 组件:打造更灵活的对话框解决方案
文章目录 引言为什么需要二次封装?封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中,Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中,我们经常会…...
3.2 一点一世界
第一步:引入背景与动机 “一点一世界”这个概念来源于泰勒公式的思想,即通过一个点及其导数信息来近似描述整个函数的行为。这种方法在数学分析中非常有用,因为它允许我们将复杂的函数简化为多项式形式,从而更容易进行计算和理解…...
力扣第156场双周赛
1. 找到频率最高的元音和辅音 给你一个由小写英文字母(a 到 z)组成的字符串 s。你的任务是找出出现频率 最高 的元音(a、e、i、o、u 中的一个)和出现频率最高的辅音(除元音以外的所有字母),并返…...
学习日志05 java
1 java里面的类型转换怎么做?int转double为例 在 Java 里,把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍: 自动类型转换(隐式转换) 由于double的取值范围比int大,Java 能够…...
4.7/Q1,GBD数据库最新文章解读
文章题目:Burden of non-COVID-19 lower respiratory infections in China (1990-2021): a global burden of disease study analysis DOI:10.1186/s12931-025-03197-7 中文标题:中国非 COVID-19 下呼吸道感染负担(1990-2021 年&a…...
do while
先进再查 import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;do{number number / 10;count count 1;} while( number > 0 );System.out.println(count…...
MySQL 主从复制与读写分离
一、MySQL 主从复制 (0)概述 MySQL 主从复制是一种数据同步机制,允许数据从一个主数据库(Master)复制到一个或多个从数据库(Slave)。其主要用途包括: 数据冗余与灾备:通…...
CSS3 基础知识、原理及与CSS的区别
CSS3 基础知识、原理及与CSS的区别 CSS3 基础知识 CSS3 是 Cascading Style Sheets 的第3个版本,是CSS技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案。 CSS3 主要模块 选择器:更强大的元素选择方式盒…...
第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计
章节引导:在模型定制的实践中,Llama Factory (github.com/hiyouga/LLaMA-Factory) 以其惊人的易用性和对多种开源大模型、多种参数高效微调方法(PEFT)的广泛支持,迅速成为开源社区的热门选择。你可能已经熟练掌握了如何…...
SpringSecurity当中的CSRF防范详解
CSRF防范 什么是CSER 以下是基于 CSRF 攻击过程的 顺序图 及详细解释,结合多个技术文档中的攻击流程: CSRF 攻击顺序图 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...
CSRF防范歪招
不保存到Cookie里呗 如果每次请求都强制通过请求头携带Token,并且不将Token存储在Cookie中,这种设计可以有效防御CSRF攻击。以下是具体原因和关键实现要点: 1. 防御原理 CSRF攻击的本质是攻击者伪造用户的请求,利用浏览器自动携…...
MyBatis与MyBatis-Plus深度分析
MyBatis与MyBatis-Plus深度分析 一、MyBatis原理与基础 1. MyBatis核心原理 MyBatis是一个半自动ORM框架,主要原理包括: SQL与代码分离:通过XML或注解配置SQL语句动态SQL:提供if、choose、foreach等标签实现动态SQL结果集映射…...
STM32 变量加载到flash的过程中
在STM32中,BIN文件内需要加载到RAM的数据由链接脚本(Linker Script)和启动代码(Startup Code)共同决定,具体机制如下: 一、BIN文件内容结构 STM32的BIN文件包含三类数据: Co…...
TCP核心机制
1. TCP五大核心机制 1.1. 顺序问题(稳重不乱) 背景:网络传输中数据包可能因路径不同或网络波动导致乱序到达,需保证接收方能按正确顺序处理数据。 原理: 序列号(Sequence Number)࿱…...
6.3对象序列化
在 Java 中,ObjectInputStream 和 ObjectOutputStream 是用于实现对象序列化(Serialization)和反序列化(Deserialization)的核心类。通过这两个类,可以将对象转换为字节流进行存储或传输,并在需…...
Flutter小白入门指南
Flutter小白入门指南 🚀 轻松构建漂亮的跨平台应用 📑 目录 一、Flutter是什么? 为什么选择Flutter?Flutter工作原理 二、环境搭建与命令行 安装Flutter SDK常用Flutter命令创建第一个项目 三、Flutter基础语法 变量与类型函数条…...
Python -将MP4文件转为GIF图片
给大家提供一个工具代码,使用Python,将MP4格式的视频文件,转换为GIF图片 首先先安装必要的包: pip install imageio pip install imageio[ffmpeg] 工具代码: import imageio# 视频文件路径 video_path r""…...
51c嵌入式~电路~合集27
我自己的原文哦~ 一、7805应用电路 简介 如上图,7805 集成稳压电路。 7805是串联式三端稳压器,三个端口分别是电压输入端(IN),地线(GND),稳压输出(OUT)…...
数据结构—(链表,栈,队列,树)
本文章写的比较乱,属于是缝合怪,很多细节没处理,显得粗糙,日后完善,今天赶时间了。 1. 红黑树的修复篇章 2. 红黑树的代码理解(部分写道注释之中了) 3. 队列与栈的代码 4. 重要是理解物理逻辑&a…...
GitHub 趋势日报 (2025年05月12日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1harry0703/MoneyPrinterTurbo利用ai大模型,一键生成高清短视频使用…...