Skip to content

Commit 7dc58d7

Browse files
committed
fix top day news with ai
1 parent 4a33dae commit 7dc58d7

8 files changed

+761
-853
lines changed

app.py

+9-6
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ async def getTodayTopNews():
136136
},
137137
{
138138
"role": "user",
139-
"content": "请从下方数据中选出10条你认为最应该让我知道的内容,返回json格式数据,返回格式{'hot_topics': [{hot_lable:'',hot_url:'',hot_value:''}]}\ndata:" + json.dumps(filtered_sites)
139+
"content": "请从下方数据中选出10条你认为最应该让我知道的内容,返回json格式数据,返回格式{'hot_topics': [{hot_label:'',hot_url:'',hot_value:''}]}\ndata:" + json.dumps(filtered_sites)
140140
}
141141
])
142142
todayTopNewsData = json.loads(repair_json(text))
@@ -161,7 +161,7 @@ async def getTodayTopNews():
161161
},
162162
{
163163
"role": "user",
164-
"content": "对下方数据的content进行300字左右的高效总结,并增加一个4字类型tag,作为hot_content的值,以json格式返回,返回格式{hot_lable:'',hot_url:'',hot_value:'',hot_content:'',hot_tag:''}\ndata:" + json.dumps(needKnow)
164+
"content": "对下方数据的content进行300字左右的高效总结,并增加一个4字类型tag,作为hot_content的值,以json格式返回,返回格式{hot_label:'',hot_url:'',hot_value:'',hot_content:'',hot_tag:''}\ndata:" + json.dumps(needKnow)
165165
}
166166
], False)
167167
summarize = json.loads(repair_json(summarize))
@@ -172,6 +172,8 @@ async def getTodayTopNews():
172172
if "content" in summarize:
173173
summarize = summarize['content']
174174
del needKnow['content']
175+
if "hot_label" not in summarize:
176+
continue
175177
needKnow['hot_content'] = summarize['hot_content']
176178
needKnow['hot_tag'] = summarize['hot_tag']
177179
summarizes.append(needKnow)
@@ -186,7 +188,7 @@ async def getTodayTopNews():
186188
fg.description('Today top news with AI')
187189
for item in summarizes:
188190
fe = fg.add_entry()
189-
fe.title(item.get('title', item['hot_lable']))
191+
fe.title(item.get('title', item['hot_label']))
190192
fe.link(href=item.get('url', item['hot_url']))
191193
fe.description(item.get('description', item['hot_content']))
192194
fg.rss_file('rss_feed_today_top_news.xml')
@@ -328,9 +330,10 @@ async def get_data(item_id: str):
328330
fg.link(href='https://www.hotday.uk')
329331
fg.description('Today top news with AI')
330332
for item in data:
331-
fe = fg.add_entry()
332-
fe.title(item.get('title', item['hot_lable']))
333-
fe.link(href=item.get('url', item['hot_url']))
333+
if item and "hot_label" in item:
334+
fe = fg.add_entry()
335+
fe.title(item.get('title', item['hot_label']))
336+
fe.link(href=item.get('url', item['hot_url']))
334337
fg.rss_file('rss_feed.xml')
335338
return {
336339
"code": 200,

rss_feed_today_top_news.xml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"><channel><title>todayTopNewsWithAI</title><link>https://www.hotday.uk</link><description>Today top news with AI</description><docs>http://www.rssboard.org/rss-specification</docs><generator>python-feedgen</generator><lastBuildDate>Thu, 05 Dec 2024 04:33:09 +0000</lastBuildDate><item><title>OpenAI深夜官宣:连续12天发布AI大招,“截胡”DeepMind头条,Sora、满血o1或将发布</title><link>https://www.36kr.com/p/3065218011817089</link><description>Google DeepMind发布了最新的基础世界模型Genie 2,能够通过一张图片生成可操作的3D环境,标志着其在虚拟世界理解上的进步。同时,OpenAI宣布为期12天的圣诞惊喜活动,每天发布新内容,包括文本到视频工具Sora、增强版ChatGPT、GPT-4o图像等。Genie 2的发布展示了其在生成复杂3D场景和模拟智能体行为方面的能力,可能对游戏开发和AI训练产生重大影响。2024年的AI竞争将更加激烈。</description></item><item><title>惊掉下巴,被字节起诉800万实习生,拿下NeurIPS 2024最佳论文</title><link>https://www.36kr.com/p/3064004389692805</link><description>在最近的NeurIPS 2024大会上,一位实习生因其在字节跳动的研究成果而获得最佳论文奖。这篇论文探讨了在深度学习领域,尤其是自回归模型(AR)方面的创新方法。该研究展示了一种新型的视觉自回归建模(VAR)方法,能够显著提高生成图像的质量和速度。该方法不仅在理论上提供了新的见解,还在实际应用中展现了优越的性能,超越了传统的生成对抗网络(GAN)和扩散模型。研究人员在多个数据集上进行测试,结果表明VAR在生成质量和速度上均有显著提升,尤其是在处理复杂图像时,其表现尤为突出。此外,该研究的开放源代码也在GitHub上发布,进一步推动了相关技术的应用和发展。</description></item><item><title>经济增速怎么看?新华社:破除“增速崇拜”,在5%左一点或是右一点,都可以接受</title><link>https://wallstreetcn.com/articles/3736027</link><description>中国经济的增长不仅仅关乎数字的变化,而是转向高质量发展阶段,强调经济的质量、效率和动态平衡。尽管GDP增长速度被用来衡量经济发展,但简单强调速度可能掩盖住了潜在的风险和矛盾。2023年前三季度,中国GDP同比增长4.8%,在全球经济增长放缓的背景下保持稳定。中国在推进结构优化和动力转化,中等速度的持续增长目标是5%上下浮动。习近平总书记的讲话强调不再仅仅遵循速度,而是在高质量发展的新常态中,实现经济发展的结构性改善和可持续性。改革开放以来,中国致力于在短时间内实现高收入水平的跨越,提高综合国力。当前,面对国际形势的复杂变化和国内产业的转型,中国经济需要在质量和结构上寻求新突破,以增强创新驱动力,实现更协调的经济发展,提升国民幸福感和开放水平。</description></item><item><title>两个月的美团骑手体验</title><link>https://sspai.com/post/93225</link><description>这篇文章记录了作者作为美团骑手的两个月全职工作体验。工作流程包括在应用程序中上线、接单、取餐和送餐,超时会被罚款。骑手面临的挑战主要是天气因素,如暴晒、高温和暴雨,导致身体不适和工作困难。此外,商家出餐延迟、异常顾客、交通事故和低价拼好饭订单也增加了工作难度。尽管如此,工作也有自由和多劳多得的优点,骑手可以灵活安排时间,并通过努力获得更多收入。作者还分享了骑手之间的互助精神和对社会差距的感悟。</description></item><item><title>科技股力挺美股指齐新高,法国政府将解散,欧元抹去涨幅,OPEC+会前美油跌2%</title><link>https://wallstreetcn.com/articles/3736039</link><description>根据最新消息,美国经济数据疲软,ADP新增加14.6万人,创四个月来最低,ISM服务业扩张速度放缓,且数据公布后美联储加息预期减弱。科技股在此背景下表现强劲,Salesforce和英伟达等公司股价上涨,推动标普500指数上涨0.4%。与此同时,法国政府宣布将解散,导致欧元区金融市场波动加剧。OPEC+会议前夕,市场对原油供应的担忧加剧,导致美油价格下跌2%。整体来看,尽管面临经济数据不佳的压力,科技股依然展现出强大的韧性,市场情绪有所回暖。</description></item><item><title>60多年来首次!法国国民议会通过不信任动议,政府垮台</title><link>https://wallstreetcn.com/articles/3736105</link><description>法国国民议会在12月4日周三通过了针对现任政府的不信任动议,导致总理巴尼耶仅三个月的政府被推翻。这是自1962年以来,法国政府首次因为不信任投票而被推翻。此次事件起因于巴尼耶政府在极右翼和左翼联手反对下,未能推动通过财政预算案。极右党派和左翼的联合对政府的预算案提出了强烈反对,认为其不符合公共财政稳定方针,尤其是在政府大幅增加债务的背景下。法国总统马克龙需在大选后任命新的总理,而执政危机可能持续到明年7月。在政府垮台后,法国经济面临高昂代价,债务市场受到冲击,国际投资者感到不安,评级机构已发出警告,财政状况或将导致债务不可持续。分析指出,法国政坛目前难以达成共识,未来的财政方案或只能仰赖临时预算来维持公共支出。</description></item><item><title>法国公民议会通过不信任动议,政府垮台</title><link>https://wallstreetcn.com/articles/3736105</link><description>法国政府因未能通过2025年预算案而被极右翼和左翼联合推翻。12月4日,法国国民议会以331票支持不信任动议,超过288票反对票,导致总理巴尼耶领导的政府倒台。这是自1962年以来,法国政府首次因不信任投票而被推翻。巴尼耶上任仅三个月,成为1958年以来任期最短的总理。此次不信任投票源于巴尼耶强行通过预算法案,试图通过增税和削减开支来控制法国不断上升的公共赤字。法国总统马克龙需在今夏大选后提名新总理,政治僵局可能持续至明年7月。经济学家警告,政府倒台将导致法国经济付出高昂代价,债务问题将加剧。</description></item><item><title>韩国6个在野党联合提起总统弹劾案,今日下午提交国会</title><link>https://www.thepaper.cn/newsDetail_forward_29543152</link><description>韩国国会消息称,当地时间4日下午,韩国6个在野党联合提起针对总统尹锡悦的弹劾动议案,并于当天下午提交国会。根据计划,弹劾案将于5日正式向国会报告,预计将在本月6日至7日之间进行投票表决。如果弹劾案在国会获得通过,将会送交韩国宪法法院进行最终裁决。一旦宪法法院裁定通过,韩国总统尹锡悦将立即遭到弹劾停职。此举标志着在野党联合行动,对现任总统的执政行为发出严厉挑战,反映出韩国政治格局中的深刻分歧,也将对国家政治局势产生重要影响。</description></item><item><title>App+1 | Follow:信息获取的另一种形态</title><link>https://sspai.com/post/94104</link><description>这篇文章由少数派作者pseudoyu撰写,探讨了信息获取的新方式。作者对新技术充满热情,并在闲暇时使用Logseq等效率工具进行探索。文章强调了在信息爆炸的时代,如何通过创新的工具和方法来提高信息获取的效率和质量。作者通过个人经验分享,展示了如何利用这些工具来优化日常信息管理。</description></item><item><title>两个月的美团骑手体验</title><link>https://sspai.com/post/93225</link><description>文章详细记录了作者在两个半月的美团骑手工作体验。通过描述日常流程,作者展现了这项工作中的挑战与不便:例如高温暴晒、暴雨天气带来的不便,以及配送过程中遇到的问题,包括商家卡餐、不守时的客户、交通事故等。此外,作者提到“多劳多得”是这项工作的积极面之一,在弹性工作时间与可以自由选择工作地点之间找到平衡,让作者还能够享受一些人文自然风景。尽管如此,该职业的艰辛与低回报率,如参与“拼好饭”等活动的低收益,仍给作者带来了不小的困惑。作者也分享了骑手间互相扶持的朴素友情,以及社会各阶层对外卖的依赖产生的思考,体现了不同收入水平和生活现状之间的对比。尽管美团“拼好饭”对骑手和商家都造成了一定压力,但是经济环境的变动很可能使这种趋势扩大。最后,作者表达了对自行车在工作中重要性的感谢。</description></item></channel></rss>

tools/pushSomethingTask.py

+48-153
Original file line numberDiff line numberDiff line change
@@ -16,168 +16,63 @@
1616
)
1717

1818
def scrape_huangli():
19-
url = "https://www.huangli.com/"
20-
html_content = requests.get(url).text
19+
url = "https://www.laohuangli.net/"
20+
html_content = requests.get(url, proxies={'http': 'http://127.0.0.1:7890','https': 'http://127.0.0.1:7890'}).text
2121
doc = pq(html_content)
2222
data = {}
2323

24-
# 解析左侧部分
25-
left = doc('.lunars-b .l')
26-
27-
# 提取左侧 Horoscope 信息
28-
data['left_horoscopes'] = []
29-
for elem in left('.horoscope').items():
30-
data['left_horoscopes'].append({
31-
'hit': elem.find('.hit').text(),
32-
'gz': elem.find('.gz').text(),
33-
'zodiac': elem.find('.zodiac').text(),
34-
'nayin': elem.find('.nayin').text()
35-
})
36-
37-
# 提取左侧 Solar 图片
38-
data['left_solar'] = left('.solar img').attr('src')
39-
40-
# 提取左侧宜忌
41-
data['left_yi_ji'] = [a.text() for a in left('.yi-ji').eq(0).find('a').items()]
42-
43-
# 提取左侧吉神宜趋
44-
data['left_shen_sha'] = {
45-
'title': left('.shen-sha .title span').text(),
46-
'content': left('.shen-sha p').text()
47-
}
48-
49-
# 提取左侧彭祖百忌和相冲
50-
pz_chong = {}
51-
for elem in left('.pz-chong div').items():
52-
title = elem.find('.title').text()
53-
text = elem.find('.text').text()
54-
pz_chong[title] = text
55-
data['left_pz_chong'] = pz_chong
56-
57-
# 提取左侧月名、物候、月相
58-
yz_wh_yx = []
59-
for elem in left('.yz-wh-yx div').items():
60-
yz_wh_yx.append({
61-
'title': elem.find('.title').text(),
62-
'text': elem.find('.text').text(),
63-
'img': elem.find('img').attr('src')
64-
})
65-
data['left_yz_wh_yx'] = yz_wh_yx
66-
67-
# 解析中间部分
68-
center = doc('.lunars-b .c')
69-
center_top = center('.top')
70-
71-
# 提取日期信息
72-
data['center_datepicker'] = center_top('.form-data #datetimepicker').val()
73-
data['center_return_today'] = center_top('.form-a').text()
74-
75-
# 提取今日幸运生肖
76-
lucky_zodiac = {
77-
'animals': [a.text() for a in center_top('.days-info .list').eq(0).find('.text a').items()],
78-
'title': center_top('.days-info .list').eq(0).find('.title').text()
79-
}
80-
data['center_lucky_zodiac'] = lucky_zodiac
81-
82-
# 提取今日星座
83-
today_constellation = {
84-
'constellation': center_top('.days-info .list').eq(1).find('.text').text(),
85-
'title': center_top('.days-info .list').eq(1).find('.title').text()
86-
}
87-
data['center_today_constellation'] = today_constellation
88-
89-
# 提取日期数字和农历日期
90-
data['center_date_number'] = center_top('.days-info .su').text()
91-
data['center_lunar_date'] = center_top('h4').text()
92-
93-
# 提取二维码链接
94-
data['center_qr_codes'] = []
95-
for elem in center_top('.down .QRcode').items():
96-
data['center_qr_codes'].append({
97-
'type': elem.attr('data-type'),
98-
'img_src': elem.find('img').attr('src')
99-
})
100-
101-
# 提取注意事项
102-
data['center_note'] = {
103-
'img': center_top('.note img').attr('src'),
104-
'text': center_top('.note span').text()
105-
}
106-
107-
# 提取底部信息
108-
bottom = center('.bottom')
109-
110-
# 提取财神位
111-
data['bottom_caishen'] = []
112-
for elem in bottom('.lunars-info.shen .list .item').items():
113-
data['bottom_caishen'].append({
114-
'title': elem.find('.title').text(),
115-
'text': elem.find('.text').text(),
116-
'link': elem.attr('href')
117-
})
118-
119-
# 提取阴阳贵神
120-
data['bottom_yinyang_guishen'] = []
121-
for elem in bottom('.lunars-info').eq(1).find('.list .item').items():
122-
data['bottom_yinyang_guishen'].append({
123-
'title': elem.find('.title').text(),
124-
'text': elem.find('.text').text()
125-
})
126-
127-
# 提取空亡所值
128-
data['bottom_kongwang_souzhi'] = []
129-
for elem in bottom('.lunars-info').eq(2).find('.list .item').items():
130-
data['bottom_kongwang_souzhi'].append({
131-
'title': elem.find('.title').text(),
132-
'text': elem.find('.text').text()
133-
})
134-
135-
# 提取九宫飞星
136-
data['bottom_jiugong_feixing'] = [
137-
elem.text() for elem in bottom('.lunars-info').eq(3).find('.list .item .text').items()
24+
# 左侧年份、生肖、五行信息
25+
left_divs = doc("td[class='tr-p0'] div")
26+
data['year_info'] = [
27+
{
28+
"label": pq(span.eq(0)).text(),
29+
"zodiac": pq(span.eq(1)).text(),
30+
"element": pq(span.eq(2)).text()
31+
}
32+
for div in left_divs
33+
for span in [pq(div).find("span")]
13834
]
13935

140-
# 解析右侧部分
141-
right = doc('.lunars-b .l.r')
36+
# 提取公历和农历信息
37+
calendar_info = doc("td[class='bg-table'] .middle-rowspan")
38+
data['gregorian_calendar'] = calendar_info.find("p").eq(0).text()
39+
data['lunar_calendar'] = calendar_info.find("p").eq(1).text()
14240

143-
# 提取右侧 Horoscope 信息
144-
data['right_horoscopes'] = []
145-
for elem in right('.horoscope').items():
146-
data['right_horoscopes'].append({
147-
'hit': elem.find('.hit').text(),
148-
'gz': elem.find('.gz').text(),
149-
'zodiac': elem.find('.zodiac').text()
150-
})
41+
# 提取宜和忌信息
42+
good_div = doc(".table-three-div").eq(0)
43+
bad_div = doc(".table-three-div").eq(1)
44+
data['good_actions'] = [
45+
pq(span).text() for span in good_div.find("span") if pq(span).text()
46+
]
47+
data['bad_actions'] = [
48+
pq(span).text() for span in bad_div.find("span") if pq(span).text()
49+
]
15150

152-
# 提取右侧 Solar 图片
153-
data['right_solar'] = right('.solar img').attr('src')
51+
# 提取彭祖百忌和相冲
52+
fourth_row = doc(".table-four-tr")
53+
data['pengzu_bai_ji'] = fourth_row.find(".col-td2").eq(0).find(".icon-none").text()
54+
data['xiang_chong'] = fourth_row.find(".col-td2").eq(1).find(".icon-none").text()
15455

155-
# 提取右侧宜忌
156-
data['right_yi_ji'] = [a.text() for a in right('.yi-ji a').items()]
157-
data['left_yi_ji'] = [a for a in data['left_yi_ji'] if a not in data['right_yi_ji']]
158-
# 提取右侧凶煞宜忌
159-
data['right_shen_sha'] = {
160-
'title': right('.shen-sha .title span').text(),
161-
'content': right('.shen-sha p').text()
162-
}
56+
# 提取胎神信息
57+
data['tai_shen'] = [
58+
pq(span).text()
59+
for span in fourth_row.find(".col-td2").eq(2).find(".icon-none")
60+
]
16361

164-
# 提取右侧本月胎神和今日胎神
165-
pz_chong_right = {}
166-
for elem in right('.pz-chong div').items():
167-
title = elem.find('.title').text()
168-
text = elem.find('.text').text()
169-
pz_chong_right[title] = text
170-
data['right_pz_chong'] = pz_chong_right
171-
172-
# 提取右侧岁煞、六耀、日禄
173-
yz_wh_yx_right = []
174-
for elem in right('.yz-wh-yx div').items():
175-
yz_wh_yx_right.append({
176-
'title': elem.find('.title').text(),
177-
'text': elem.find('.text').text(),
178-
'img': elem.find('img').attr('src')
179-
})
180-
data['right_yz_wh_yx'] = yz_wh_yx_right
62+
# 提取吉神和凶煞
63+
fifth_row = doc(".table-five-div")
64+
data['ji_shen'] = fifth_row.eq(0).find("p").text().replace(",", "").split()
65+
data['xiong_sha'] = fifth_row.eq(2).find("p").text().replace(",", "").split()
66+
67+
# 提取表格中的月份、物候等信息
68+
month_table = doc("table")
69+
data['month_table'] = [
70+
{
71+
pq(td.eq(0)).text(): pq(td.eq(1)).text()
72+
for td in pq(tr).find("td").items()
73+
}
74+
for tr in month_table.find("tr").items()
75+
]
18176

18277
# 保存到 Redis
18378
json_result = json.dumps(data, ensure_ascii=False, indent=4)

0 commit comments

Comments
 (0)