Python學習筆記-WXPY初識

項目地址:https://github.com/youfou/wxpy

幫助文檔:https://wxpy.readthedocs.io/zh/latest/index.html

安裝:pip install -U wxpy

簡單使用代碼記錄

# -*- coding:utf-8 -*-

import os
import sys
import json
import urllib
import requests
from wxpy import *
from bs4 import BeautifulSoup

default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)


def handle_dt(keyword, max_size=10):
    resp = requests.get('https://www.doutula.com/search', {'keyword': keyword})
    b_soup = BeautifulSoup(resp.content, 'lxml')
    a_tags = b_soup.select('#search-result-page > div > div > div > div > div.search-result.list-group-item > div > div > a > img')
    picture_name_list = []
    i = 0
    for a_tag in a_tags:
        link = a_tag.get('data-original')
        if link is not None and str(link).endswith('jpg'):
            link = str(link).strip()
            picture_name = link[link.rindex('/') + 1:]
            parent_dir = os.path.join(os.path.dirname(__file__), 'picture')
            urllib.urlretrieve(link, os.path.join(parent_dir, picture_name))
            picture_name_list.append(picture_name)
            i += 1
            if i == max_size:
                break
    return picture_name_list


def print_user_info(user):
    print '{} {} {} {} {} {} {} {}'.format(user.is_friend, user.name, user.nick_name,
        user.remark_name, user.sex, user.signature, user.province, user.city)


if __name__ == '__main__':
    bot = Bot(cache_path=True)
    # 設置歷史消息的最大保存數量
    bot.messages.max_history = 1000

    friends = bot.friends()

    t_friend_1 = friends.search(u'朋友1')[0]
    print_user_info(t_friend_1)

    t_friend_2 = friends.search(u'朋友2')[0]
    print_user_info(t_friend_2)

    groups = bot.groups()

    t_group_1 = ensure_one(groups.search(u'組1'))
    for member in t_group_1.members:
        print_user_info(member)

    t_person_1 = ensure_one(t_group_1.search(u'組員1'))
    print_user_info(t_person_1)

    history_msgs = bot.messages.search(keywords=u'關鍵字', sender=bot.self)
    for history_msg in history_msgs:
        print history_msg

    @bot.register(msg_types=FRIENDS)
    def listen_and_accept_friends(msg):
        a_friend = bot.accept_friend(msg.card)
        a_friend.send('hello')

    @bot.register(chats=[t_friend_1, t_friend_2])
    def listen_and_reply_friends(msg):
        print 'received msg:[{}] {}'.format(msg.type, msg.text)
        if msg.type == 'Picture':
            parent_dir = os.path.join(os.path.dirname(__file__), 'picture')
            print 'picture dir {} name {}'.format(parent_dir, msg.file_name)
            msg.get_file(save_path=os.path.join(parent_dir, msg.file_name))
        elif msg.type == 'Video':
            parent_dir = os.path.join(os.path.dirname(__file__), 'video')
            print 'video dir {} name {}'.format(parent_dir, msg.file_name)
            msg.get_file(save_path=os.path.join(parent_dir, msg.file_name))
        elif msg.type == 'Recording':
            parent_dir = os.path.join(os.path.dirname(__file__), 'recording')
            print 'recording dir {} name {}'.format(parent_dir, msg.file_name)
            msg.get_file(save_path=os.path.join(parent_dir, msg.file_name))
        else:
            msg.reply('thank you ! i have received it')

        parent_dir = os.path.join(os.path.dirname(__file__), 'picture')
        picture_name_list = handle_dt(msg.text, max_size=2)
        for picture_name in picture_name_list:
            msg.reply_image(os.path.join(parent_dir, picture_name))

    @bot.register(Group)
    def listen_and_reply_groups(msg):
        msg_member = msg.member
        print 'received member {} {} {}'.format(msg_member.group, msg_member.name, msg_member.display_name)
        print 'received msg:[{}] {}'.format(msg.type, msg.text)
        sender = msg.sender
        if isinstance(sender, Group):
            print_user_info(sender.owner)
        receiver = msg.receiver
        if isinstance(receiver, User):
            print_user_info(receiver)
        if isinstance(msg.chat, Group) and msg.is_at:
            msg.reply('thank you ! i have received it')

    @bot.register(t_group_1)
    def listen_and_reply_t_group_1(msg):
        parent_dir = os.path.join(os.path.dirname(__file__), 'picture')
        picture_name_list = handle_dt(msg.text, max_size=4)
        for picture_name in picture_name_list:
            msg.reply_image(os.path.join(parent_dir, picture_name))
        if msg.member == t_person_1:
            msg.forword(bot.file_helper, prefix=u'留言')

    embed()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章