feat: update files

pull/206/head
LiLittleCat 2 years ago
parent 47c91b43c9
commit bb88d3b900
  1. 126
      README.md
  2. 470
      data/abnormal-websites.json
  3. 1928
      data/normal-websites.json
  4. 8
      pom.xml
  5. 71
      src/main/java/com.lilittlecat/freechatgpt/Build.java
  6. 3
      src/main/java/com.lilittlecat/freechatgpt/Feature.java
  7. 10
      src/main/java/com.lilittlecat/freechatgpt/Website.java
  8. 31
      src/main/resources/abnormal-websites-table.ftl
  9. 40
      src/main/resources/normal-websites-table.ftl

@ -2,12 +2,15 @@
[English](README_en.md)
🚀 免费的 ChatGPT (<https://chat.openai.com/>) 镜像网站列表,持续更新。
🎁 免费的 ChatGPT (<https://chat.openai.com/>) 镜像网站列表,以及相关资源,持续更新。
此处列出的网站均来源于互联网,请注意不要在这些网站上输入任何个人敏感信息。
当然,非常感谢他们出色的工作,如果您觉得它有用,可以考虑捐赠或打赏他们。
🌈 欢迎贡献
- [添加镜像站点](https://github.com/LiLittleCat/awesome-free-chatgpt/issues/new?assignees=LiLittleCat&labels=&projects=&template=%E6%B7%BB%E5%8A%A0%E9%95%9C%E5%83%8F%E7%AB%99%E7%82%B9.md&title=%E6%B7%BB%E5%8A%A0%E9%95%9C%E5%83%8F%E7%AB%99%E7%82%B9)
- [反馈站点失效](https://github.com/LiLittleCat/awesome-free-chatgpt/issues/new?assignees=LiLittleCat&labels=&projects=&template=%E5%8F%8D%E9%A6%88%E7%AB%99%E7%82%B9%E5%A4%B1%E6%95%88.md&title=%E5%8F%8D%E9%A6%88%E7%AB%99%E7%82%B9%E5%A4%B1%E6%95%88)
- 更多
---
| 🏆 赞助商 🏆 |
@ -18,25 +21,25 @@
## 🌈 欢迎贡献
欢迎随时提交 [issue](https://github.com/LiLittleCat/awesome-free-chatgpt/issues) 和 [PR](https://github.com/LiLittleCat/awesome-free-chatgpt/pulls) 新增网站或报告网站失效,如果您发现此项目有用,不要忘记 star ,您的支持是我前进的动力。
如果您发现此项目有用,不要忘记 star 🌟,您的支持是我前进的动力。
## 📖 列表
## 💬 ChatGPT 镜像列表
> 注
>
> - 排名不分先后
>
> - [ 🆓 ] 使用没有限制
>
> - [ 🔐 ] 有限使用,需要输入 API key 或登录
>
> - [ 🌎 ] 需要科学上网
>
> - [ 📚 ] 除了 ChatGPT 以外还有别的 AI bot
>
> - [ 🔔 ] GPT4 (默认3.5)
> 注:
>
> - [ 🚧 ] 建设中
> 1. 排序规则,见 [#80](https://github.com/LiLittleCat/awesome-free-chatgpt/discussions/80)
> 2. 标签含义
> - 🆓完全免费,打开即用
> - 🔓有免费额度
> - 🔒需要登陆
> - 🔑需要输入 API Key
> - 💰需要充值
> - 👀需要关注公众号
> - 💪支持 GPT4
> - 🧰不仅仅是 Chat
> - 🌎需要国际网络
### 类似官网风格
@ -293,43 +296,10 @@
<!-- normal-end -->
---
### 替代方案
- [ 🆓 ] [https://huggingface.co/chat](https://huggingface.co/chat) from https://huggingface.co - 2023-04-26
- [ 🆓📚🌎 ] [https://chat.lmsys.org](https://chat.lmsys.org/) from <https://github.com/lm-sys/FastChat>
- [ 🔐🌎🔔📚 ] [https://poe.com](https://poe.com)
- [ 🔐🌎🔔 ] [Bing Chat](https://www.bing.com/new)
- [ 📚 ] [Google Bard](https://bard.google.com)
- [ 🚧📚 ] [Anthropic Claude](https://www.anthropic.com/product)
- [ 🚧📚 ] [百度 文心一言](https://yiyan.baidu.com/welcome)
- [ 🆓🚧📚 ] [Open Assistant](https://open-assistant.io/)
- [ 🚧📚 ] [阿里 通义千问](https://tongyi.aliyun.com/)
- [ 🚧📚 ] [科大讯飞 星火](https://xinghuo.xfyun.cn/)
---
### 软件
- [ 🆓🔔 ] [Cursor](https://www.cursor.so/)
---
### 🚫 已失效
<details>
<summary>点击展开</summary>
<summary>🚫 已失效</summary>
<!-- abnormal-begin -->
@ -391,6 +361,40 @@
</details>
---
## 🗨 ChatGPT 替代方案
- [ 🆓 ] [https://huggingface.co/chat](https://huggingface.co/chat) from https://huggingface.co - 2023-04-26
- [ 🆓📚🌎 ] [https://chat.lmsys.org](https://chat.lmsys.org/) from <https://github.com/lm-sys/FastChat>
- [ 🔐🌎🔔📚 ] [https://poe.com](https://poe.com)
- [ 🔐🌎🔔 ] [Bing Chat](https://www.bing.com/new)
- [ 📚 ] [Google Bard](https://bard.google.com)
- [ 🚧📚 ] [Anthropic Claude](https://www.anthropic.com/product)
- [ 🚧📚 ] [百度 文心一言](https://yiyan.baidu.com/welcome)
- [ 🆓🚧📚 ] [Open Assistant](https://open-assistant.io/)
- [ 🚧📚 ] [阿里 通义千问](https://tongyi.aliyun.com/)
- [ 🚧📚 ] [科大讯飞 星火](https://xinghuo.xfyun.cn/)
---
### 软件
- [ 🆓🔔 ] [Cursor](https://www.cursor.so/)
---
## 🤟 玩得开心
## Star History
@ -405,9 +409,11 @@
## ChatGPT Alternative
## More
## 📚 More...
### 💡 Prompt
### Want to build your own ChatGPT mirror?
### 💿 Want to build your own ChatGPT mirror?
- https://github.com/mckaywrigley/chatbot-ui
- https://github.com/Yidadaa/ChatGPT-Next-Web
@ -416,13 +422,19 @@
- https://github.com/869413421/chatgpt-web
- https://github.com/xqdoo00o/chatgpt-web
### Prompt
### Developer tools with Chat
### 💻 Developer tools with Chat
- cursor.so
- codeium.com
## 🤟 Have fun
### 🌟 Star History
[![Star History Chart](https://api.star-history.com/svg?repos=LiLittleCat/awesome-free-chatgpt&type=Date)](https://star-history.com/#LiLittleCat/awesome-free-chatgpt&Date)
### 💞 Contributors
[![Contributors](https://contrib.rocks/image?repo=LiLittleCat/awesome-free-chatgpt)](https://github.com/LiLittleCat/awesome-free-chatgpt/graphs/contributors)
<table>
<tr><th>序号</th><th>网站</th><th>预览</th><th>标签</th><th>添加时间</th><th>备注</th><th>操作</th></tr>

@ -0,0 +1,470 @@
[
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":1,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-20",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"http://www.tdchatd.us/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":2,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-28",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://gpt.gpt0.icu"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":3,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-21",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat2.zhuleixx.top/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":4,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-20",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat.ohtoai.com/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":5,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-20",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://ai.zyun.vip/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":6,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-20",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"http://www.tdchat.vip/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":7,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-18",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://ai.bo-e.com/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":8,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-16",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat.zhuleixx.top/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":9,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-13",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://www.tdchat.com/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":10,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-11",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chatgpt3.fun/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":11,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://freegpt.one"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":12,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"http://gitopenchina.gitee.io/gpt"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":13,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"http://gitopenchina.gitee.io/chatgpt"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":14,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-10",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"http://gitopenchina.gitee.io/freechatgpt"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":15,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://qachat.vercel.app"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":16,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-03",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://qachat.cn/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":17,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-01",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://www.askme.mom/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":18,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat.tgbot.co/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":19,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chatgpt.ddiu.me"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":20,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-03-22",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://xc.com/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":21,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat.yqcloud.top/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":22,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-03-22",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://www.scyu.app/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":23,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-03-22",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chatgpt-flutter.h7ml.cn"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":24,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://www.aitoolgpt.com/"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":25,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-03-22",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chatapi.qload.cn"
},
{
"addedDate":null,
"customDescription":null,
"description":null,
"features":null,
"id":26,
"labels":null,
"lang":null,
"previewUrl":null,
"reportedInvalidDate":"2023-04-04",
"reportedInvalidReason":null,
"score":null,
"sourceInfo":null,
"status":null,
"title":null,
"updatedDate":null,
"url":"https://chat.ninvfeng.xyz/"
}
]

File diff suppressed because it is too large Load Diff

@ -32,7 +32,7 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>freemarker</groupId>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.32</version>
</dependency>
@ -58,9 +58,9 @@
<version>1.15.3</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.20</version>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>

@ -2,16 +2,32 @@ package com.lilittlecat.freechatgpt;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONWriter;
import com.alibaba.fastjson.serializer.SerializerFeature;
import freemarker.cache.FileTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Build {
public static void main(String[] args) {
public static void main(String[] args) throws TemplateException, IOException {
Build build = new Build();
build.init();
}
public void init() throws IOException, TemplateException {
String basePath = System.getProperty("user.dir");
String readmeFilePath = basePath + File.separator + "README.md";
File file = new File(readmeFilePath);
@ -20,6 +36,8 @@ public class Build {
String abnormalSitesContent = StrUtil.subBetween(readContent, "<!-- abnormal-begin -->", "<!-- abnormal-end -->");
String[] normalSites = normalSitesContent.split("\n");
List<Website> normalWebsites = new ArrayList<>();
int normalId = 1;
for (String normalSite : normalSites) {
// Extract the link
String link = extractLink(normalSite);
@ -27,12 +45,60 @@ public class Build {
String time = extractTime(normalSite);
if (StrUtil.isNotBlank(link) && StrUtil.isNotBlank(time)) {
Website website = new Website();
website.setId(normalId++);
website.setUrl(link);
website.setAddedDate(time);
normalWebsites.add(website);
}
System.out.println(link + " " + time);
}
String normalWebsitesJSONString = JSON.toJSONString(normalWebsites, SerializerFeature.WriteMapNullValue, SerializerFeature.PrettyFormat, SerializerFeature.SortField);
File normalWebsitesJSON = new File(basePath + File.separator + "data" + File.separator + "normal-websites.json");
FileUtil.writeString(normalWebsitesJSONString, normalWebsitesJSON, StandardCharsets.UTF_8);
String[] abnormalSites = abnormalSitesContent.split("\n");
List<Website> abnormalWebsites = new ArrayList<>();
int abnormalId = 1;
for (String abnormalSite : abnormalSites) {
// Extract the link
String link = extractLink(abnormalSite);
// Extract the time
String time = extractTime(abnormalSite);
if (StrUtil.isNotBlank(link) && StrUtil.isNotBlank(time)) {
Website website = new Website();
website.setId(abnormalId++);
website.setUrl(link);
website.setAddedDate(LocalDate.parse(time));
website.setReportedInvalidDate(time);
abnormalWebsites.add(website);
}
System.out.println(link + " " + time);
}
String abnormalWebsitesJSONString = JSON.toJSONString(abnormalWebsites, SerializerFeature.WriteMapNullValue, SerializerFeature.PrettyFormat, SerializerFeature.SortField);
File abnormalWebsitesJSON = new File(basePath + File.separator + "data" + File.separator + "abnormal-websites.json");
FileUtil.writeString(abnormalWebsitesJSONString, abnormalWebsitesJSON, StandardCharsets.UTF_8);
// Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
// FileTemplateLoader templateLoader = new FileTemplateLoader(new File(basePath + File.separator + "src" + File.separator + "main" + File.separator + "resources"));
// cfg.setTemplateLoader(templateLoader);
//
//// cfg.setClassForTemplateLoading(Website.class, basePath + File.separator + "src" + File.separator + "main" + File.separator + "resources");
// cfg.setDefaultEncoding("UTF-8");
// Template template = cfg.getTemplate("normal-websites-table.ftl");
//
// Map<String, Object> model = new HashMap<>();
// model.put("websites", normalWebsites);
//
// StringWriter out = new StringWriter();
// template.process(model, out);
//
// String renderedHtml = out.toString();
// System.out.println(renderedHtml);
}
@ -44,6 +110,7 @@ public class Build {
}
return null;
}
public static String extractTime(String content) {
Pattern timePattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
Matcher timeMatcher = timePattern.matcher(content);

@ -8,7 +8,8 @@ import lombok.Getter;
*/
@Getter
public enum Feature {
FREE("free", "🎁", 2f),
// FREE("free", "🎁", 2f),
FREE("free", "🆓", 2f),
FREE_QUOTA("free_quota", "🔓", 1f),
GPT4_SUPPORTED("gpt4_supported", "💪", 1f),
MORE_THAN_CHAT("more_than_chat", "🧰", 0.5f),

@ -3,6 +3,7 @@ package com.lilittlecat.freechatgpt;
import lombok.Data;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
@ -11,18 +12,21 @@ import java.util.List;
*/
@Data
public class Website {
private Integer id;
private String url;
private String title;
private String description;
private String lang;
private List<Feature> features;
private Double score;
private LocalDate addedDate;
private LocalDate updatedDate;
private LocalDate reportedInvalidDate;
private String addedDate;
private String updatedDate;
private String reportedInvalidDate;
private String reportedInvalidReason;
private String labels;
private String customDescription;
private String sourceInfo;
private String previewUrl;
/**
* 0: normal 1: abnormal
*/

@ -0,0 +1,31 @@
<table>
<thead>
<tr>
<th>序号</th>
<th>网站</th>
<th>语言</th>
<th>标签</th>
<th>报告失效时间</th>
<th>失效原因</th>
</tr>
</thead>
<tbody>
<#list websites as website>
<tr>
<td>${website_index + 1}</td>
<td>${website.title!""} <a href="${website.url!""}" target="_blank">${website.url!""}</a>
<br> ${website.description!""}</td>
<td>${website.lang!""}</td>
<td>
<#if website.features??>
<#list website.features as feature>
${feature.label!""}
</#list>
</#if>
</td>
<td>${website.reportedInvalidDate!""}</td>
<td>${website.reportedInvalidReason!""}</td>
</tr>
</#list>
</tbody>
</table>

@ -0,0 +1,40 @@
<table>
<thead>
<tr>
<th>序号</th>
<th>网站</th>
<th>语言</th>
<th>标签</th>
<th>添加时间</th>
<th>备注</th>
<th>预览</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<#list websites as website>
<tr>
<td>${website_index + 1}</td>
<td>${website.title!""} <a href="${website.url!""}" target="_blank">${website.url!""}</a>
<br> ${website.description!""}</td>
<td>${website.lang!""}</td>
<td>
<#if website.features??>
<#list website.features as feature>
${feature.label!""}
</#list>
</#if>
</td>
<td>${website.addedDate!""}</td>
<td>${website.customDescription!""}</td>
<td style="text-align: center">
<details>
<summary>点击预览</summary>
<img src="${website.previewUrl!""}" alt="preview">
</details>
</td>
<td>点赞</td>
</tr>
</#list>
</tbody>
</table>
Loading…
Cancel
Save