

在多种官方技术社群中,资讯早报通常是开启今天话题得一天。但并不是所有的内容你都感兴趣,于是你便想自己去定制自己的“早报助手”。
如何获取IT行业中最新的资讯?
如果主动浏览,会花费很多时间,并且很难找到感兴趣的内容,尝试自动获取?
的好处是,可以对任何网站进行操作,坏处是,官方不一定允许你这样做。可以尝试在网站后面加上robots.txt来查看“君子协议”。
比如腾讯云的:
User-agent:*
Disallow:/*?from=
省略...
Disallow:/developer/search
Disallow:/developer/article/old/
Disallow:/developer/beta/article/最后三个是社区相关。
优点:
这是官方网站开放的接口,可以自己去订阅(解析)。
缺点:
内容局限。
XML格式需要自己进行解析。
英文内容。
本篇以Spring的Blog为例
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Spring]]></title><description><![CDATA[Level up your Java code and explore what Spring can do for you.]]></description><link>https://spring.io</link><generator>GatsbyJS</generator><lastBuildDate>Tue, 15 Oct 2024 09:15:08 GMT</lastBuildDate><item><title><![CDATA[This Week in Spring - October 15th, 2024]]></title><link>https://spring.io/blo..常规来说,在 Java 领域中,解析 xml 会使用 dom4j 框架。随后的第一步就是针对文件格式做映射,成为一个RSS对象后,就可以方便后续操作。不过由于RSS的特殊性,格式是比较固定的。随之而来的,就是成熟的类库。本篇采用的框架是:rome。
条条大路通罗马。ROME 是一组 Atom/RSS Java 实用程序,可以轻松地在大多数联合格式的 Java 中工作。今天,它接受所有风格的 RSS(0.90、0.91、0.92、0.93、0.94、1.0 和 2.0)、Atom 0.3 和 Atom 1.0 源。Rome 包括一组用于各种 Feed 的解析器和生成器,以及用于从一种格式转换为另一种格式的转换器。解析器可以返回特定于所需格式的 Java 对象。
官方的 Demo 也很简洁,如果你愿意,甚至可以写成一行。
String url = "https://stackoverflow.com/feeds/tag?tagnames=rome";
SyndFeed feed = new SyndFeedInput().build(new XmlReader(new URL(url)));
System.out.println(feed.getTitle());对于Spring的RSS,是这样发现的:

得到的就是一个返回固定格式 xml 的地址。
先来打印一下试试效果,代码如下
// SPRING_ATOM 替换为真实地址
URL feedUrl = new URL(SPRING_ATOM);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
for (SyndEntry entry : feed.getEntries()) {
System.out.println("title: " + entry.getTitle());
}输出结果
title: This Week in Spring - October 15th, 2024
title: Spring Batch 5.2.0-M2 is available now!
title: A Bootiful Podcast: New York Java SIG chair and founder Frank Greco on community, AI, and more
title: Spring Cloud 2024.0.0-M2 (aka Moorgate) Has Been Released
title: Spring AI 1.0.0 M3 Released
title: This Week in Spring - October 8th, 2024
title: From Spring Cloud Data Flow 2.11.x to 3.0
title: Supercharging Your AI Applications with Spring AI Advisors
title: This Week in Spring - October 1st, 2024
title: From Spring Framework 6.2 to 7.0得到解析后的内容还是不太方便理解,也不够直观,这时到了本篇主人公--混元登场。
如果为了追求更好的翻译,是人工。能够自动化的情况下,一线大厂都会提供API服务。那如果让大模型加入战场,翻译赛道又有了新范式。
只需在内容前添加翻译:,一个简单的Prompt 模板就好了。
加入上述代码中,得到如下:
ChatCompletionsRequest req = new ChatCompletionsRequest();
// 免费模型
req.setModel(Model.LITE);
// for 循环内部
Message message = new Message();
message.setRole(Role.USER);
message.setContent("翻译" + entry.getTitle());
req.setMessages(new Message[]{message});
ChatCompletionsResponse resp = client.ChatCompletions(req);
System.out.println(resp.getChoices()[0].getMessage().getContent();生成结果。
本周春意浓,2014年10月15日 现在可以获取 Spring Batch 5.2.0-M2 版本了! 一个精彩的播客:纽约Java SIG主席和创始人Frank Greco谈社区、AI等话题。 翻译:Spring Cloud 2024.0.0-M2(又名Moorgate)已发布 发布Spring AI 1.0.0 M3 本周春意 - 2014年10月8日 从 Spring Cloud Data Flow 2.11.x 到 3.0 的翻译是: 从 Spring Cloud Data Flow 2.11.x 版本升级到 3.0 版本。 用Spring AI Advisors增强您的AI应用 本周春意 - 2014年10月1日 从 Spring Framework 6.2 迁移到 7.0
值得夸奖的是他保留了一些专业术语的英文,但并没有全部保留,比如春意。
如果光看到标题,可能不会清楚到底这个RSS说了什么。可以再让其总结contents(内容)。
此时不用再追加翻译一词,因为混元默认会用中文回答。只需加概括:即可。
因为现在用的免费模型,不用考虑服务器,带宽外的成本。如果是付费模型,这么问几次,几万token就没了,一顿早餐就丢了。所以就要像查询数据库一样节约成本。那就是:减少输入输出。总结出一下几个妙招:
最后输出内容会是一个含标题,链接,新闻内容的Markown文本,距离正常阅读还有些距离。如果期望的最终形态是一个海报,可以让 AI 再以 SVG 格式产出。
提示词:请用中文总结以下内容,并以SVG格式返回:{contents}

当然我们更想要的是只有svg代码的返回,可以手动使用正则的方式提取
String regex = "/\\*\\*(.*?)\\*\\*/"; // 这个正则表达式用于匹配Markdown的代码块
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(markdown);
while (matcher.find()) {
String codeBlock = matcher.group(1);
if (codeBlock.trim().startsWith("xml")) {
System.out.println("XML content:\n" + codeBlock);
}
}
// 以上由元宝生成,仅供参考。不过可能由于AI的不稳定,生成的svg并不一定能描绘,甚至不生成svg格式。
这样一个小型AI应用并不会单独纯在并运行,它可以是一个定时启动的脚本,通过服务器的定时计划来操控。也可以是工具箱的一部分。
如何在windows环境中,定时调动一个jar包?
外部代码部分,仅需两行
@echo off
java -jar "D:\path\RSSHelper.jar"再加入定时计划即可。
当然,这并不是这个产品的最终形态,它至少还应该可以动态添加RSS源。以及期待混元变得更强大,让后端程序更酷一些。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。