1 #思路
2 #1、每次发送的时候都去查一条,记录发送的条数
3 #2、提前取n条,5000,
4 import requests,json,time
5 from day8.homework import const,utlis
6 import schedule
7
8
9 #1、获取5000条,存redis 获取新闻的
10 #2、获取一条,发送到群里,并且把这条数据,致为已发送
11 #3、直到5000条件都发送完,
12 def get_news(page,limit=const.news_limit):
13 print("开始获取新闻")
14 data = {"page":page,"count":limit}
15 req = requests.post(const.news_url,data)
16 news_list = req.json().get("result")
17 print("获取新闻结束,共%s条"% len(news_list))
18 return news_list
19
20 def save_news_to_redis(news_list):
21 print("开始保存新闻到redis")
22 r = utlis.get_redis()
23 for news in news_list:
24 news["status"] = 0
25 news = json.dumps(news)
26 r.lpush(const.news_list_key,news)
27 print("%s保存完成" % news)
28 print("所有新闻保存redis完成")
29
30
31 def format_msg(news):
32 news.pop("image")
33 msg = """
34 新闻标题:{title}
35 详情:{path}
36 新闻时间:{passtime}
37 """.format_map(news)
38 return msg
39
40 def send_msg():
41 r = utlis.get_redis()
42 index = r.get(const.news_index_key) #1 5000
43 if not index or int(index)>const.news_limit:
44 page = int(r.get(const.news_page_key)) if r.get(const.news_page_key) else 1
45 index = 1
46 news_list = get_news(page)
47 save_news_to_redis(news_list)
48 r.set(const.news_page_key,page+1)
49 news = r.lindex(const.news_list_key,index)
50 news = json.loads(news)
51 news["status"] = 1 #把状态改成已发送
52 msg = format_msg(news)
53 utlis.send_dd_msg(msg)
54 r.lset(const.news_list_key,index,json.dumps(news)) #修改发送状态
55 r.set(const.news_index_key,int(index)+1)
56 print("======",msg)
57 print("消息发送完成")
58
59 if __name__ == '__main__':
60 while True:
61 send_msg()
62 time.sleep(60*60)