78 줄 Python 코드 는 현재 위 챗 철회 메시지 기능 을 실현 합 니 다.

파 이 썬 은 일찍이 나 에 게"시간 이 많 지 않 으 니 빨리 파 이 썬 을 써 라."라 고 말 한 적 이 있다.그래서 python 기반 의 위 챗 소스 라 이브 러 리 를 보 았 습 니 다.itchat 는 하루 를 놀 았 고 프로그램 을 만 들 었 습 니 다.개인 적 인 위 챗 에서 철수 한 정 보 를 수집 하여 개인 적 인 위 챗 에 보 낼 수 있 는 파일 전송 도 우미 입 니 다.예 를 들 어:
who:누가 보 냈 습 니까?
언제 보 낸 메시지.
what:무슨 정보.
  • which:텍스트,이미지,음성,영상,공유,위치,첨부 파일 등 어떤 정 보 를 포함 합 니까?
    01 코드 구현
    
    # -*-encoding:utf-8-*- 
    import os 
    import re 
    import shutil 
    import time 
    import itchat 
    from itchat.content import * 
    #   :          、  、  、  、  、  、  、   
    # {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)} 
    msg_dict = {} 
    #          
    rev_tmp_dir = "/home/alic/RevDir/" 
    if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir) 
    #         |        note msg_id           
    face_bug = None 
    #              ,                      |               
    # [TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO, FRIENDS, NOTE] 
    @itchat.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO]) 
    def handler_receive_msg(msg): 
      global face_bug 
      #                    e: 2017-04-21 21:30:08 
      msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) 
      #   ID 
      msg_id = msg['MsgId'] 
      #      
      msg_time = msg['CreateTime'] 
      #         |        RemarkName                None 
      msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName"] 
      #      
      msg_content = None 
      #       
      msg_share_url = None 
      if msg['Type'] == 'Text' \ 
          or msg['Type'] == 'Friends': 
        msg_content = msg['Text'] 
      elif msg['Type'] == 'Recording' \ 
          or msg['Type'] == 'Attachment' \ 
          or msg['Type'] == 'Video' \ 
          or msg['Type'] == 'Picture': 
        msg_content = r"" + msg['FileName'] 
        #      
        msg['Text'](rev_tmp_dir + msg['FileName']) 
      elif msg['Type'] == 'Card': 
        msg_content = msg['RecommendInfo']['NickName'] + r"    " 
      elif msg['Type'] == 'Map': 
        x, y, location = re.search( 
          "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3) 
        if location is None: 
          msg_content = r"  ->" + x.__str__() + "   ->" + y.__str__() 
        else: 
          msg_content = r"" + location 
      elif msg['Type'] == 'Sharing': 
        msg_content = msg['Text'] 
        msg_share_url = msg['Url'] 
      face_bug = msg_content 
      #      
      msg_dict.update( 
        { 
          msg_id: { 
            "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec, 
            "msg_type": msg["Type"], 
            "msg_content": msg_content, "msg_share_url": msg_share_url 
          } 
        } 
      ) 
    #   note     ,               
    @itchat.msg_register([NOTE]) 
    def send_msg_helper(msg): 
      global face_bug 
      if re.search(r"\<\!\[CDATA\[.*       \]\]\>", msg['Content']) is not None: 
        #      id 
        old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1) 
        old_msg = msg_dict.get(old_msg_id, {}) 
        if len(old_msg_id) < 11: 
          itchat.send_file(rev_tmp_dir + face_bug, toUserName='filehelper') 
          os.remove(rev_tmp_dir + face_bug) 
        else: 
          msg_body = "       ~" + "
    " \ + old_msg.get('msg_from') + " " + old_msg.get("msg_type") + " " + "
    " \ + old_msg.get('msg_time_rec') + "
    " \ + " ⇣" + "
    " \ + r"" + old_msg.get('msg_content') # if old_msg['msg_type'] == "Sharing": msg_body += "
    ➣ " + old_msg.get('msg_share_url') # itchat.send(msg_body, toUserName='filehelper') # if old_msg["msg_type"] == "Picture" \ or old_msg["msg_type"] == "Recording" \ or old_msg["msg_type"] == "Video" \ or old_msg["msg_type"] == "Attachment": file = '@fil@%s' % (rev_tmp_dir + old_msg['msg_content']) itchat.send(msg=file, toUserName='filehelper') os.remove(rev_tmp_dir + old_msg['msg_content']) # msg_dict.pop(old_msg_id) if __name__ == '__main__': itchat.auto_login(hotReload=True,enableCmdQR=2) itchat.run()
    이 프로그램 은 터미널 에서 직접 실행 할 수 있 습 니 다.터미널 스 캔 에 성공 하면 로그 인 에 성공 할 수 있 습 니 다.또한 window 시스템 에서 도 포장 하여 실행 할 수 있 습 니 다.(경 로 를 수정 하고 상대 경 로 를 사용 하 는 것 을 추천 합 니 다)
    
     ~ python wx.py 
    Getting uuid of QR code. 
    Downloading QR code. 
    Please scan the QR code to log in. 
    Please press confirm on your phone. 
    Loading the contact, this may take a little while. 
    �[3;J 
    Login successfully as AlicFeng 
    Start auto replying.
    02 효과 도
     
    03 itchat
    위 에는 모두 프로 그래 밍 논리의 작은 일 들 이 있 으 니,나 는 itchat 위 챗 이라는 오픈 소스 라 이브 러 리 를 기록 하 는 것 이 좋 겠 다.
    1.프로필
    itchat 는 오픈 소스 의 위 챗 개인 번호 인터페이스 로 python 을 사용 하여 위 챗 을 호출 하 는 것 이 매우 간단 합 니 다.간단하게 itchat 코드 를 사용 하면 위 챗 을 바탕 으로 하 는 인 스 턴 트 메 시 지 를 구축 할 수 있 습 니 다.더욱 좋 은 것 은 개인 위 챗 의 다른 플랫폼 에서 의 더 많은 통신 기능 을 확장 하 는 데 있 습 니 다.
    2.설치pip3 install itchat3. itchat - Helloworld
    세 줄 코드 만 파일 전송 조수 에 게 메 시 지 를 보 냅 니 다.
    
    import itchat 
    itchat.auto_login(hotReload=True) 
    itchat.send('Hello AlicFeng', toUserName='filehelper')
    4.클 라 이언 트 보기
     
    가장 중요 한 것 은 역시 API 설명 매 뉴 얼 입 니 다.
    Github for itchat:
    https://github.com/liduanwei/ItChat
    중국어 API:
    http://itchat.readthedocs.io/zh/latest/
  • 좋은 웹페이지 즐겨찾기