From ad98e19e5e8fba9be75756898e8623cf1fdf3216 Mon Sep 17 00:00:00 2001 From: Changhua Date: Wed, 19 Oct 2022 20:41:23 +0800 Subject: [PATCH] Package client --- python/MANIFEST.in | 2 ++ python/README.MD | 71 +++++++++++++++++++++++++++++++++++----- python/setup.py | 40 ++++++++++++++++++++++ python/wcferry/client.py | 4 +-- 4 files changed, 106 insertions(+), 11 deletions(-) create mode 100644 python/MANIFEST.in create mode 100644 python/setup.py diff --git a/python/MANIFEST.in b/python/MANIFEST.in new file mode 100644 index 0000000..f98b04c --- /dev/null +++ b/python/MANIFEST.in @@ -0,0 +1,2 @@ +include wcferry/*.dll +exclude demo.py diff --git a/python/README.MD b/python/README.MD index 39576d1..cd3eda6 100644 --- a/python/README.MD +++ b/python/README.MD @@ -1,7 +1,64 @@ # WeChatFerry Python 客户端 -代码于 `Python3.7` 环境开发。 +⚠️ **只支持 Windows** ⚠️ -## 配置环境 +## 快速开始 +```sh +pip install wcferry +``` + +参考 Demo: +```py +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- + +import signal +from time import sleep + +from wcferry import Wcf + + +def main(): + wcf = Wcf() + + def handler(sig, frame): + wcf.cleanup() # 退出前清理环境 + exit(0) + + signal.signal(signal.SIGINT, handler) + sleep(1) # Slow down + print(f"Is Login: {True if wcf.is_login() else False}") + print(f"SelfWxid: {wcf.get_self_wxid()}") + + sleep(1) + wcf.enable_recv_msg(print) + # wcf.disable_recv_msg() # 当需要停止接收消息的时候,随时调用 + + ret = wcf.send_text("Hello world.", "filehelper") + print(f"send_text: {ret}") + + ret = wcf.send_image("TEQuant.jpeg", "filehelper") + print(f"send_image: {ret}") + + print(f"Message types:\n{wcf.get_msg_types()}") + print(f"Contacts:\n{wcf.get_contacts()}") + + print(f"DBs:\n{wcf.get_dbs()}") + print(f"Tables:\n{wcf.get_tables('db')}") + print(f"Results:\n{wcf.query_sql('MicroMsg.db', 'SELECT * FROM Contact LIMIT 1;')}") + + # wcf.accept_new_friend("v3", "v4") # 需要真正的 V3、V4 信息 + + # 阻塞程序,让程序一直运行 + wcf.keep_running() + + +if __name__ == "__main__": + main() + +``` + +## 一起开发 +### 配置环境 ```sh # 创建虚拟环境 python -m venv .env @@ -13,14 +70,10 @@ pip install --upgrade pip pip install grpcio grpcio-tools ``` -## 运行 -```sh -# 启动客户端 -python demo.py -``` - -## 重新生成 gRPC 文件 +### 重新生成 gRPC 文件 ```sh cd wcf python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I=../ wcf.proto ``` + +### 参考项目 [README](../README.MD) diff --git a/python/setup.py b/python/setup.py new file mode 100644 index 0000000..dcfad20 --- /dev/null +++ b/python/setup.py @@ -0,0 +1,40 @@ +#! /usr/bin/env python3 +# -*- coding: utf-8 -*- + + +from __future__ import print_function +from setuptools import setup, find_packages + +import wcferry + +with open("README.md", "r", encoding="utf-8") as fh: + long_description = fh.read() + + +setup( + name="wcferry", + version=wcferry.__version__, + author="Changhua", + author_email="lichanghua0821@gmail.com", + description="一个玩微信的工具", + long_description=long_description, + long_description_content_type="text/markdown", + license="MIT", + url="https://github.com/lich0821/WeChatFerry", + python_requires='>=3.7', + packages=find_packages(), + include_package_data=True, + install_requires=[ + "setuptools>=47.1.0", + "grpcio>=1.49.1", + "grpcio-tools>=1.49.1", + ], + classifiers=[ + "Environment :: Win32 (MS Windows)", + "Intended Audience :: Developers", + "Intended Audience :: Customer Service", + "Topic :: Communications :: Chat", + "Operating System :: Microsoft :: Windows", + "Programming Language :: Python", + ], +) diff --git a/python/wcferry/client.py b/python/wcferry/client.py index 8a2b6a2..23d67c6 100644 --- a/python/wcferry/client.py +++ b/python/wcferry/client.py @@ -13,12 +13,12 @@ from typing import List, Callable, Optional import grpc -WCF_ROOT = os.path.dirname(os.path.abspath(__file__)) +WCF_ROOT = os.path.abspath(os.path.dirname(__file__)) sys.path.insert(0, WCF_ROOT) import wcf_pb2 # noqa import wcf_pb2_grpc # noqa -__version__ = "v3.7.0.30-11" +__version__ = "v3.7.0.30.11" class Wcf():