Total Complexity | 15 |
Total Lines | 65 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | # -*- coding: utf-8 -*- |
||
2 | """ |
||
3 | cron: 40 7 * * * |
||
4 | new Env('每日新闻'); |
||
5 | """ |
||
6 | |||
7 | import re |
||
8 | import traceback |
||
9 | |||
10 | import requests |
||
11 | |||
12 | from notify_mtr import send |
||
13 | from utils import get_data |
||
14 | |||
15 | |||
16 | class News: |
||
17 | def parse_data(self, data: dict, obj_name: str) -> str: |
||
18 | if data.get(obj_name) != {}: |
||
19 | msg = "" |
||
20 | need_obj = data.get(obj_name) |
||
21 | items = need_obj.items() |
||
22 | for key, value in items: |
||
23 | if key == "content": |
||
24 | for i in value: |
||
25 | msg += str(i) |
||
26 | msg += "\n" |
||
27 | elif ( |
||
28 | type(value) is not bool |
||
29 | and len(value) != 0 |
||
30 | and not bool(re.search("[a-z]", str(value))) |
||
31 | ): |
||
32 | msg += str(value) + "\n" |
||
33 | return msg |
||
34 | |||
35 | def main(self): |
||
36 | msg = "" |
||
37 | try: |
||
38 | res = requests.get(url=f"https://news.topurl.cn/api").json() |
||
39 | if res.get("code") == 200: |
||
40 | data = res.get("data", {}) |
||
41 | if data.get("newsList") != []: |
||
42 | msg += "📮 每日新闻 📮\n" |
||
43 | no = 1 |
||
44 | for news in data.get("newsList", []): |
||
45 | msg += f'{str(no).zfill(2)}. <a href="{news.get("url")}>{news.get("title")}</a>\n' |
||
46 | no += 1 |
||
47 | if data.get("historyList") != []: |
||
48 | msg += "\n🎬 历史上的今天 🎬\n" |
||
49 | for history in data.get("historyList", []): |
||
50 | msg += f'{history.get("event", "")}\n' |
||
51 | msg += "\n🧩 天天成语 🧩\n" + self.parse_data(data, "phrase") |
||
52 | msg += "\n🎻 慧语香风 🎻\n" + self.parse_data(data, "sentence") |
||
53 | msg += "\n🎑 诗歌天地 🎑\n" + self.parse_data(data, "poem") |
||
54 | except Exception: |
||
55 | msg += f"每日新闻: 异常 {traceback.format_exc()}" |
||
56 | return msg |
||
57 | |||
58 | |||
59 | if __name__ == "__main__": |
||
60 | data = get_data() |
||
61 | news = data.get("NEWS") |
||
62 | if news: |
||
63 | res = News().main() |
||
64 | send("每日新闻", res) |
||
65 |