wangkun 2 rokov pred
rodič
commit
4bbb0273c6
3 zmenil súbory, kde vykonal 106 pridanie a 7 odobranie
  1. 101 7
      main/feishu_lib.py
  2. 3 0
      main/follow_list.py
  3. 2 0
      main/recommend_list.py

+ 101 - 7
main/feishu_lib.py

@@ -27,6 +27,12 @@ class Feishu:
     # 数据监控表
     crawler_monitor = "https://w42nne6hzg.feishu.cn/sheets/shtcnlZWYazInhf7Z60jkbLRJyd?"
 
+    # 手机号
+    wangkun = "13426262515"
+    gaonannan = "18501180073"
+    xinxin = "15546206651"
+    huxinxue = "18832292015"
+
     # 飞书路径token
     @classmethod
     def spreadsheettoken(cls, crawler):
@@ -291,8 +297,8 @@ class Feishu:
                 "majorDimension": major_dimension,
                 "startIndex": startindex,
                 "endIndex": endindex
-                }
             }
+        }
         try:
             urllib3.disable_warnings()
             r = requests.delete(url=dimension_range_url, headers=headers, json=body, proxies=proxies, verify=False)
@@ -300,13 +306,101 @@ class Feishu:
         except Exception as e:
             Common.logger(log_type).error("删除视频数据异常:{}", e)
 
+    # 获取用户 ID
+    @classmethod
+    def get_userid(cls, log_type, username):
+        try:
+            url = "https://open.feishu.cn/open-apis/user/v1/batch_get_id?"
+            headers = {
+                "Authorization": "Bearer " + cls.get_token(log_type),
+                "Content-Type": "application/json; charset=utf-8"
+            }
+            if username == "wangkun":
+                username = cls.wangkun
+            elif username == "gaonannan":
+                username = cls.gaonannan
+            elif username == "xinxin":
+                username = cls.xinxin
+            elif username == "huxinxue":
+                username = cls.huxinxue
+            data = {"mobiles": [username]}
+            urllib3.disable_warnings()
+            r = requests.get(url=url, headers=headers, params=data, verify=False, proxies=proxies)
+            open_id = r.json()["data"]["mobile_users"][username][0]["open_id"]
+            Common.logger(log_type).info("{}:{}", username, open_id)
+            # print(f"{username}:{open_id}")
+            return open_id
+        except Exception as e:
+            Common.logger(log_type).error("get_userid异常:{}", e)
 
-if __name__ == "__main__":
-    feishu = Feishu()
+    # 飞书机器人
+    @classmethod
+    def bot(cls, log_type, content):
+        try:
+            url = "https://open.feishu.cn/open-apis/bot/v2/hook/96989577-50e7-4653-9ec2-308fe3f2c5fe"
+            headers = {
+                'Content-Type': 'application/json'
+            }
+            data = json.dumps({
+                "msg_type": "interactive",
+                "card": {
+                    "config": {
+                        "wide_screen_mode": True,
+                        "enable_forward": True
+                    },
+                    "elements": [{
+                        "tag": "div",
+                        "text": {
+                            "content": "\n<at id=" + str(cls.get_userid(log_type, "wangkun")) + "></at>\n" + content,
+                            "tag": "lark_md"
+                        }
+                    }, {
+                        "actions": [{
+                            "tag": "button",
+                            "text": {
+                                "content": "快手爬虫表",
+                                "tag": "lark_md"
+                            },
+                            "url": "https://w42nne6hzg.feishu.cn/sheets/shtcnICEfaw9llDNQkKgdymM1xf",
+                            "type": "default",
+                            "value": {}
+                        },
+                            {
+                                "tag": "button",
+                                "text": {
+                                    "content": "快手Jenkins",
+                                    "tag": "lark_md"
+                                },
+                                "url": "https://jenkins-on.yishihui.com/view/%E7%88%AC%E8%99%AB-Spider/job/%E5%BF%"
+                                       "AB%E6%89%8B%E5%B0%8F%E7%A8%8B%E5%BA%8F-%E8%A7%86%E9%A2%91%E7%88%AC%E5%8F%96/",
+                                "type": "default",
+                                "value": {}
+                            }
+
+                        ],
+                        "tag": "action"
+                    }],
+                    "header": {
+                        "title": {
+                            "content": "📣有新的报警,请注意查处",
+                            "tag": "plain_text"
+                        }
+                    }
+                }
+            })
+            urllib3.disable_warnings()
+            r = requests.post(url, headers=headers, data=data, verify=False, proxies=proxies)
+            Common.logger(log_type).info("触发机器人消息:{}, {}", r, r.json()["StatusMessage"])
+        except Exception as e:
+            Common.logger(log_type).error("bot异常:{}", e)
 
-    # print(feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B4:B4")[0])
-    # print(feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "C5:C5")[0][0]["link"])
-    # print(feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B6:B6")[0])
-    # print(feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B7:B7")[0])
 
+if __name__ == "__main__":
+    Feishu.bot("kuaishou", "我是快手测试内容,请忽略")
+    # Feishu.get_userid("kuaishou", "huxinxue")
+    # Feishu.get_department("kuaishou")
+    # print(Feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B4:B4")[0])
+    # print(Feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "C5:C5")[0][0]["link"])
+    # print(Feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B6:B6")[0])
+    # print(Feishu.get_range_value("person", "xiaoniangao", "dzcWHw", "B7:B7")[0])
     pass

+ 3 - 0
main/follow_list.py

@@ -319,6 +319,7 @@ class Follow:
                               json=json_text, proxies=proxies, verify=False)
             # Common.logger(log_type).info("response:{}\n\n", r.text)
             if "feeds" not in r.json():
+                Feishu.bot(log_type, "follow:get_videos_from_person:"+r.text)
                 Common.logger(log_type).warning("response:{}", r.text)
             else:
                 feeds = r.json()["feeds"]
@@ -508,6 +509,7 @@ class Follow:
                     return
 
         except Exception as e:
+            Feishu.bot(log_type, "follow:get_videos_from_person异常" + format(e))
             Common.logger(log_type).error("get_videos_from_person异常:{}\n", e)
 
     # 获取所有关注列表的用户视频
@@ -655,6 +657,7 @@ class Follow:
                     Common.logger(log_type).info("视频:{},下载/上传成功\n", download_video_title)
                     return
         except Exception as e:
+            Feishu.bot(log_type, "follow:download_publish异常" + format(e))
             Common.logger(log_type).error("download_publish异常:{}", e)
 
     # 执行下载/上传

+ 2 - 0
main/recommend_list.py

@@ -294,6 +294,7 @@ class KuaiShou:
                     Feishu.update_values(log_type, "kuaishou", "JK6npf", "A2:P2", values)
                     Common.logger(log_type).info("视频:{}添加至feeds成功\n".format(video_title))
         except Exception as e:
+            Feishu.bot(log_type, "recommend:get_feeds异常"+format(e))
             Common.logger(log_type).error("获取视频 list 异常:{}\n".format(e))
 
     @classmethod
@@ -428,6 +429,7 @@ class KuaiShou:
                     Common.logger(log_type).info("该视频不满足下载规则,删除在云文档中的信息:{}\n", download_video_title)
                     return
         except Exception as e:
+            Feishu.bot(log_type, "recommend:download_publish异常" + format(e))
             Common.logger(log_type).error("视频 info 异常,删除该视频信息\n", e)
             # 删除行或列,可选 ROWS、COLUMNS
             Feishu.dimension_range(log_type, "kuaishou", "JK6npf", "ROWS", 2, 2)