1、获取5000条,存redis 获取新闻的 2、获取一条,发送到群里,并且把这条数据,致为已发送 3、直到5000条件都发送完,

 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)

 

posted @ 2021-07-02 16:19  等待iing  阅读(124)  评论(0)    收藏  举报