Esempio n. 1
0
def make_event_from_page(link):
    event = Event()
    event.link = link
    try:
        f = urlopen(link)
        soup = BeautifulSoup(f)
        main = soup.select(".sectionMain")[0]

        event.name = main.select(".subHeading")[0].get_text().strip()

        info = main.select(".secondaryContent")[0].get_text()

        sstart = regex_start.search(info).group(1).strip()
        event.start = datetime.strptime(sstart, date_format)

        send = regex_end.search(info).group(1).strip()
        event.end = datetime.strptime(send, date_format)

        event.location = urllib.parse.unquote_plus(regex_loc.search(str(main)).group(1).strip())
        if event.start is not None and event.start >= datetime.today() \
            and event.location is not None:
            event.coords = geocode(event.location)
    except Exception:
        pass

    return event
Esempio n. 2
0
def main():
    event = Event(e_smoking=True)
    event.TaskID = '4396'
    event.start()
    t_send = NewThread('Event', '4396', 4, tctimeClient)

    v_cap.video_path = gParam.Video_Path
    v_cap.video = 'smoking.mp4'

    setting(status='run', writing=True)
    setting(address=gParam.Event_Setting_Json, status='run', writing=True)

    t_send.start()

    time.sleep(30)
    setting(status='stop', writing=True)
    setting(address=gParam.Event_Setting_Json, status='stop', writing=True)
Esempio n. 3
0
def event_ins():
    event = Event(e_helmet=True)
    event.TaskID = '10010-4396'
    v_cap.start()
    event.start()
    v_cap.video_path = False
    t_send = NewThread('Event', '10010-4396', 5, tctimeClient)
    t_send.period = 7

    # 开启事件响应功能 由于是测试 设置一分钟自动关闭
    setting(status='run', writing=True)
    setting(address=gParam.Event_Setting_Json, status='run', writing=True)

    t_send.start()

    time.sleep(60)
    setting(status='stop', writing=True)
    setting(address=gParam.Event_Setting_Json, status='stop', writing=True)
Esempio n. 4
0
from event import Event
from pprint import pprint as pr
from selenium import webdriver

# def sele_phantom():
#     url = "https://tanzu.vmware.com/content/webinars/jun-30-making-k8s-great-improving-the-kubernetes-developer-experience?utm_campaign=Global_BT_Q221_Improving-K8s-Developer-Experience&utm_source=twitter&utm_medium=social"
#     browser = webdriver.PhantomJS()
#     browser.get(url)
#
#     iframe = browser.find_element_by_tag_name("iframe")
#     print(iframe)
#     browser.switch_to.default_content()
#     browser.switch_to.frame(iframe)
#
#     iframe_source = browser.page_source
#
#     print(iframe_source)
#
#     print(browser.current_url)

if __name__ == "__main__":

    keywords = "kubernetes"

    event = Event(keywords)
    # start crawler
    data = event.start()

    pr(data)
    # sele_phantom()
Esempio n. 5
0
class SmartQQ(Thread, Codes):

    def __init__(self):
        Thread.__init__(self)
        self._run = True
        self.success = 0    # 登录成功1or失败-1or正在登录中0
        self._http = HttpClient.getInstance()
        self._task = Tasks()
        self._event = Event()
        self._event.setDaemon(True)

    def stop(self):
        variable.State = False
        variable.Offine = True
        self._run = False
        self._event.stop()
        self._task.end()

    def run(self):
        # 先从数据库中查询管理员和关注的群号码(加快后面的访问速度)
        db = DBDriver(variable.DbFile)
        db.openConn()
        db.exec_(variable.Table_Admin)
        db.exec_(variable.Table_Group)
        db.exec_(variable.Table_Ask)
        # [('892768447',), ('892768447',)]
        try:
            variable.Admins = set([j for i in db.select(variable.Select_Admin) for j in i])
            variable.Groups = set([j for i in db.select(variable.Select_Group) for j in i])
            print("管理员: %s", variable.Admins)
            print("关注群: %s", variable.Groups)
        except Exception as e:
            print.error(e)
        db.closeConn()
        if self.login():
            t = 0
            self._event.start()
            while self._run:
                if variable.Exit:
                    self.stop()
                    break
                if variable.Offine:
                    break
                # 心跳包轮询
                if t > 5:
                    data = {"from":variable.Email, "to":variable.Email, "title":"QQ下线", "msg":"网络无连接"}
                    self._http.post(variable.EmailUrl, data)
                    self.stop()
                    break
                time.sleep(1)    # 1秒一轮询
                ret = self.check()
                print("ret: %s", ret)
                retcode = ret.get("retcode")
                if retcode == 100006:
                    break    # post数据有误
                if retcode == 102 or retcode == 108:
                    continue    # 无消息
                if retcode == 116:
                    variable.Ptwebqq = ret.get("p")
                    continue    # 更新ptwebqq值
                if retcode == 0:
                    # 消息广播
                    self.msg_handler(ret.get("result"))
                    continue
                if ret == "":
                    t = t + 1
                    continue    # 返回数据有误

    def date_to_millis(self, date):
        return int(time.mktime(date.timetuple())) * 1000

    def check(self):
        data = {'r' : '{{"ptwebqq":"{0}","clientid":{1},"psessionid":"{2}","key":""}}'.format(self.bytesToStr(variable.Ptwebqq), self.bytesToStr(variable.Clientid), self.bytesToStr(variable.Psessionid))}
        html = self._http.post(variable.POLL, data, referer = variable.Referer)
        try:
            ret = json.loads(self.bytesToStr(html))
        except:
            ret = {"retcode":"", "p":self.bytesToStr(variable.Ptwebqq), "result":""}
        return ret

    def msg_handler(self, msgs):
        for m in msgs:
            if type(m) == type(""):
                variable.Offine = True
                self.logout()
                break
            msg = Msg(m.get("poll_type"), m.get("value"))
            # print("data: ", msg.getData())
            # 消息类型(群消息or个人消息)
            mtype = msg.getPollType()
            # 发送者
            fuin = msg.getFromUin()
            # print("fuin: ", fuin)
            # 群消息发送者
            suin = msg.getSendUin()
            # print("suin: ", suin)
            content = msg.getContent()
            # print("content: ", content)
            content = msg.getMsg()
            # print("content: ", content)
            # 被挤下线
            if mtype == "kick_message":
                reason = msg.getReason()
                data = {"from":variable.Email, "to":variable.Email, "title":"QQ下线", "msg":reason}
                self._http.post(variable.EmailUrl, data)
            # 私聊or临时
            elif mtype in ("message", "sess_message"):
                # qq = self.uin_to_qq(msg.getFromUin())
                # print("qq: ", qq)
                # item = (函数,发送者,None,None,消息)
                if not variable.State:
                    return    # 机器人被管理员关闭
                item = (self._task.delwith, fuin, None, None, content)
                self._event.add(item)
            # 群聊
            elif mtype == "group_message":
                if not variable.State:
                    return    # 机器人被管理员关闭
                # 群号码
                iseq = msg.getInfoSeq()
                # print("iseq: ", iseq)
                # suin = msg.getSendUin()
                # print("suin: ", suin)
                # item = (函数,发送群,发送者,群号码,消息)
                print(content)
                item = (self._task.delwith, fuin, suin, iseq, content)
                self._event.add(item)

    def logout(self):
        url = variable.LogoutUrl.format(variable.Clientid, variable.Psessionid)
        self._http.get(url, referer = variable.Referer)
        self._event.stop()
        self._task.end()

    def login(self):
        print("正在获取登录页面")
        html = self._http.get(variable.LoginUrl)
        # print html

        login_url = self.getReValue(self.strToBytes(html), b'\.src\s*=\s*"(.*?)"').group(1)
        print("login_url: %s", login_url)
        html = self._http.get(self.bytesToStr(login_url) + "0")
        print(self.strToBytes(html));open('html.html','wb').write(self.strToBytes(html))

        print("获取appid")
        variable.Appid = self.getReValue(self.strToBytes(html), b'var g_appid\s*=\s*encodeURIComponent\("(\d+)"\);').group(1)
        print("appid: %s", variable.Appid)

        print("获取login_sig")
        variable.Sig = self.getReValue(self.strToBytes(html), b'var g_login_sig\s*=\s*encodeURIComponent\("(.*?)"\);').group(1)
        print("sig: %s", variable.Sig)

        print("获取pt_version")
        variable.Version = self.getReValue(self.strToBytes(html), b'var g_pt_version\s*=\s*encodeURIComponent\("(\d+)"\);').group(1)
        print("version: %s", variable.Version)

        print("获取mibao_css")
        variable.MibaoCss = self.getReValue(self.strToBytes(html), b'var g_mibao_css\s*=\s*encodeURIComponent\("(.+?)"\);').group(1)
        print("mibao_css: %s", variable.MibaoCss)

        t = 0    # 计数器
        starttime = self.date_to_millis(datetime.datetime.utcnow())
        while self._run:
            t = t + 1
            print("下载登录二维码")
            if not self._http.down(variable.QrCodeUrl.format(self.bytesToStr(variable.Appid)), variable.QrCodePath):
                continue
            print("登录二维码下载成功,请扫描")
            while self._run:
                html = self._http.get(
                    variable.QrCodeCheckUrl.format(
                        self.bytesToStr(variable.Appid),
                        self.date_to_millis(datetime.datetime.utcnow()) - starttime,
                        self.bytesToStr(variable.MibaoCss),
                        self.bytesToStr(variable.Version),
                        self.bytesToStr(variable.Sig)),
                    self.bytesToStr(login_url))
                print(html)
                ret = self.bytesToStr(html).split("'")
                print(ret)
                if len(ret) < 2:
                    self.success = -1
                    print("登录失败")
                    break
                if ret[1] == "65":
                    print("二维码失效")
                    break    # 65失效 0成功 66未失效 67验证中
                if ret[1] == "0":
                    print("二维码验证成功")
                    break
                time.sleep(2)
            if len(ret) < 2:
                self.success = -1
                print("登录失败")
                break
            if ret[1] == "0" or t > 5:
                break    # 验证成功获取超出循环次数

        if len(ret) < 2:
            self.success = -1
            print("登录失败")
            return

        if ret[1] != "0":
            self.success = -1
            print("取消登录")
            return False

        print("二维码已扫描,正在登录")
        # 删除二维码图片
        try:
            os.remove(variable.QrCodePath)
        except:
            pass
        print("ret[11]: %s", ret[11])
        print("ret[5]: %s", ret[5])
        html = self._http.get(ret[5])
        # print html
        mibao_res_url = self.getReValue(self.strToBytes(html), b'\s*src="(.*?)"')
        if mibao_res_url:
            mibao_res_url = mibao_res_url.group(1)
        print("mibao_res_url: %s", mibao_res_url)
        if mibao_res_url:
            html = self._http.get(self.bytesToStr(mibao_res_url).replace("&amp;", "&"))
            print(html)
            redirect_url = self.getReValue(self.strToBytes(html), b'location\.href\s*=\s*"(.*?)"').group(1)
            print("redirect_url: %s", redirect_url)
            html = self._http.get(self.bytesToStr(redirect_url))
            print(html)

        # variable.Ptwebqq = self.getCookie("ptwebqq")
        variable.Ptwebqq = self._http.getCookie("ptwebqq")
        print("_ptwebqq: %s", variable.Ptwebqq)
        data = {'r' : variable.LoginParam.format(self.bytesToStr(variable.Ptwebqq), self.bytesToStr(variable.Clientid), self.bytesToStr(variable.Psessionid))}
        html = self._http.post(variable.LoginUrl2, data, referer = variable.Referer)
        print(html)
        ret = json.loads(self.bytesToStr(html))
        print(ret)

        if ret.get("retcode") != 0:
            self.success = -1
            print("登录失败")
            return False

        print("登录成功")
        self.success = 1
        variable.Vfwebqq = ret.get("result").get("vfwebqq")
        variable.Psessionid = ret.get("result").get("psessionid")
        print("_vfwebqq: %s", variable.Vfwebqq)
        print("_psessionid: %s", variable.Psessionid)

        print("QQ号: {0} 登录成功".format(ret.get("result").get("uin")))
        # print(self.allCookie())
        return True