summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-itchat.spec489
-rw-r--r--sources1
3 files changed, 491 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..bdf10c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/itchat-1.3.10.tar.gz
diff --git a/python-itchat.spec b/python-itchat.spec
new file mode 100644
index 0000000..94aa4d8
--- /dev/null
+++ b/python-itchat.spec
@@ -0,0 +1,489 @@
+%global _empty_manifest_terminate_build 0
+Name: python-itchat
+Version: 1.3.10
+Release: 1
+Summary: A complete wechat personal account api
+License: MIT
+URL: https://github.com/littlecodersh/ItChat
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/14/0c/81bb3bca97c721087ea58c652d0fb6ae1218fb2949e35ce874027a8e4e4b/itchat-1.3.10.tar.gz
+BuildArch: noarch
+
+Requires: python3-requests
+Requires: python3-pyqrcode
+Requires: python3-pypng
+
+%description
+|Python2| |Python3|
+itchat is an open source api for WeChat, a commonly-used Chinese social networking app.
+Accessing your personal wechat account through itchat in python has never been easier.
+A wechat robot can handle all the basic messages with only less than 30 lines of codes.
+And it's similiar to itchatmp (api for wechat massive platform), learn once and get two tools.
+Now Wechat is an important part of personal life, hopefully this repo can help you extend your personal wechat account's functionality and enbetter user's experience with wechat.
+**Installation**
+ pip install itchat
+**Simple uses**
+With itchat, if you want to send a message to filehelper, this is how:
+ import itchat
+ itchat.auto_login()
+ itchat.send('Hello, filehelper', toUserName='filehelper')
+And you only need to write this to reply personal text messages.
+ import itchat
+ @itchat.msg_register(itchat.content.TEXT)
+ def text_reply(msg):
+ return msg.text
+ itchat.auto_login()
+ itchat.run()
+For more advanced uses you may continue on reading or browse the `document <https://itchat.readthedocs.org/zh/latest/>`__.
+**Try**
+You may have a try of the robot based on this project first:
+|QRCodeOfRobot|
+Here is the `code <https://gist.github.com/littlecodersh/ec8ddab12364323c97d4e36459174f0d>`__.
+**Advanced uses**
+*Special usage of message dictionary*
+You may find out that all the users and messages of itchat are dictionaries by printing them out onto the screen.
+But actually they are useful classes itchat created.
+They have useful keys and useful interfaces, like:
+ @itchat.msg_register(TEXT)
+ def _(msg):
+ # equals to print(msg['FromUserName'])
+ print(msg.fromUserName)
+And like:
+ author = itchat.search_friends(nickName='LittleCoder')[0]
+ author.send('greeting, littlecoder!')
+*Message register of various types*
+The following is a demo of how itchat is configured to fetch and reply daily information.
+ import itchat, time
+ from itchat.content import *
+ @itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
+ def text_reply(msg):
+ msg.user.send('%s: %s' % (msg.type, msg.text))
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ typeSymbol = {
+ PICTURE: 'img',
+ VIDEO: 'vid', }.get(msg.type, 'fil')
+ return '@%s@%s' % (typeSymbol, msg.fileName)
+ @itchat.msg_register(FRIENDS)
+ def add_friend(msg):
+ msg.user.verify()
+ msg.user.send('Nice to meet you!')
+ @itchat.msg_register(TEXT, isGroupChat=True)
+ def text_reply(msg):
+ if msg.isAt:
+ msg.user.send(u'@%s\u2005I received: %s' % (
+ msg.actualNickName, msg.text))
+ itchat.auto_login(True)
+ itchat.run(True)
+*Command line QR Code*
+You can access the QR Code in command line through using this command:
+ itchat.auto_login(enableCmdQR=True)
+Because of width of some character differs from systems, you may adjust the enableCmdQR to fix the problem.
+ # for some linux system, width of block character is one instead of two, so enableCmdQR should be 2
+ itchat.auto_login(enableCmdQR=2)
+Default background color of command line is dark (black), if it's not, you may set enableCmdQR to be negative:
+ itchat.auto_login(enableCmdQR=-1)
+*Hot reload*
+By using the following command, you may reload the program without re-scan QRCode in some time.
+ itchat.auto_login(hotReload=True)
+*User search*
+By using `search_friends`, you have four ways to search a user:
+1. Get your own user information
+2. Get user information through `UserName`
+3. Get user information whose remark name or wechat account or nickname matches name key of the function
+4. Get user information whose remark name, wechat account and nickname match what are given to the function
+Way 3, 4 can be used together, the following is the demo program:
+ # get your own user information
+ itchat.search_friends()
+ # get user information of specific username
+ itchat.search_friends(userName='@abcdefg1234567')
+ # get user information of function 3
+ itchat.search_friends(name='littlecodersh')
+ # get user information of function 4
+ itchat.search_friends(wechatAccount='littlecodersh')
+ # combination of way 3, 4
+ itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh')
+There are detailed information about searching and getting of massive platforms and chatrooms in document.
+*Download and send attachments*
+The attachment download function of itchat is in Text key of msg
+Name of the file (default name of picture) is in FileName key of msg
+Download function accept one location value (include the file name) and store attachment accordingly.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ itchat.send('@%s@%s' % (
+ 'img' if msg['Type'] == 'Picture' else 'fil', msg['FileName']),
+ msg['FromUserName'])
+ return '%s received' % msg['Type']
+If you don't want a local copy of the picture, you may pass nothing to the function to get a binary string.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ with open(msg.fileName, 'wb') as f:
+ f.write(msg.download())
+*Multi instance*
+You may use the following commands to open multi instance.
+ import itchat
+ newInstance = itchat.new_instance()
+ newInstance.auto_login(hotReload=True, statusStorageDir='newInstance.pkl')
+ @newInstance.msg_register(itchat.content.TEXT)
+ def reply(msg):
+ return msg['Text']
+ newInstance.run()
+*Set callback after login and logout*
+Callback of login and logout are set through `loginCallback` and `exitCallback`.
+ import time
+ import itchat
+ def lc():
+ print('finish login')
+ def ec():
+ print('exit')
+ itchat.auto_login(loginCallback=lc, exitCallback=ec)
+ time.sleep(3)
+ itchat.logout()
+If loginCallback is not set, qr picture will be deleted and cmd will be cleared.
+If you exit through phone, exitCallback will also be called.
+**FAQ**
+Q: Why I can't send files whose name is encoded in utf8?
+A: That's because of the upload setting of requests, you can put `this file <https://gist.github.com/littlecodersh/9a0c5466f442d67d910f877744011705>`__ (for py3 you need `this <https://gist.github.com/littlecodersh/e93532d5e7ddf0ec56c336499165c4dc>`__) into packages/urllib3 of requests package.
+Q: How to use this package to use my wechat as an monitor?
+A: There are two ways: communicate with your own account or with filehelper.
+Q: Why sometimes I can't send messages?
+A: Some account simply can't send messages to yourself, so use `filehelper` instead.
+**Comments**
+If you have any problems or suggestions, you can talk to me in this `issue <https://github.com/littlecodersh/ItChat/issues/1>`__
+Or on `gitter <https://badges.gitter.im/littlecodersh/ItChat.svg>`__.
+
+%package -n python3-itchat
+Summary: A complete wechat personal account api
+Provides: python-itchat
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-itchat
+|Python2| |Python3|
+itchat is an open source api for WeChat, a commonly-used Chinese social networking app.
+Accessing your personal wechat account through itchat in python has never been easier.
+A wechat robot can handle all the basic messages with only less than 30 lines of codes.
+And it's similiar to itchatmp (api for wechat massive platform), learn once and get two tools.
+Now Wechat is an important part of personal life, hopefully this repo can help you extend your personal wechat account's functionality and enbetter user's experience with wechat.
+**Installation**
+ pip install itchat
+**Simple uses**
+With itchat, if you want to send a message to filehelper, this is how:
+ import itchat
+ itchat.auto_login()
+ itchat.send('Hello, filehelper', toUserName='filehelper')
+And you only need to write this to reply personal text messages.
+ import itchat
+ @itchat.msg_register(itchat.content.TEXT)
+ def text_reply(msg):
+ return msg.text
+ itchat.auto_login()
+ itchat.run()
+For more advanced uses you may continue on reading or browse the `document <https://itchat.readthedocs.org/zh/latest/>`__.
+**Try**
+You may have a try of the robot based on this project first:
+|QRCodeOfRobot|
+Here is the `code <https://gist.github.com/littlecodersh/ec8ddab12364323c97d4e36459174f0d>`__.
+**Advanced uses**
+*Special usage of message dictionary*
+You may find out that all the users and messages of itchat are dictionaries by printing them out onto the screen.
+But actually they are useful classes itchat created.
+They have useful keys and useful interfaces, like:
+ @itchat.msg_register(TEXT)
+ def _(msg):
+ # equals to print(msg['FromUserName'])
+ print(msg.fromUserName)
+And like:
+ author = itchat.search_friends(nickName='LittleCoder')[0]
+ author.send('greeting, littlecoder!')
+*Message register of various types*
+The following is a demo of how itchat is configured to fetch and reply daily information.
+ import itchat, time
+ from itchat.content import *
+ @itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
+ def text_reply(msg):
+ msg.user.send('%s: %s' % (msg.type, msg.text))
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ typeSymbol = {
+ PICTURE: 'img',
+ VIDEO: 'vid', }.get(msg.type, 'fil')
+ return '@%s@%s' % (typeSymbol, msg.fileName)
+ @itchat.msg_register(FRIENDS)
+ def add_friend(msg):
+ msg.user.verify()
+ msg.user.send('Nice to meet you!')
+ @itchat.msg_register(TEXT, isGroupChat=True)
+ def text_reply(msg):
+ if msg.isAt:
+ msg.user.send(u'@%s\u2005I received: %s' % (
+ msg.actualNickName, msg.text))
+ itchat.auto_login(True)
+ itchat.run(True)
+*Command line QR Code*
+You can access the QR Code in command line through using this command:
+ itchat.auto_login(enableCmdQR=True)
+Because of width of some character differs from systems, you may adjust the enableCmdQR to fix the problem.
+ # for some linux system, width of block character is one instead of two, so enableCmdQR should be 2
+ itchat.auto_login(enableCmdQR=2)
+Default background color of command line is dark (black), if it's not, you may set enableCmdQR to be negative:
+ itchat.auto_login(enableCmdQR=-1)
+*Hot reload*
+By using the following command, you may reload the program without re-scan QRCode in some time.
+ itchat.auto_login(hotReload=True)
+*User search*
+By using `search_friends`, you have four ways to search a user:
+1. Get your own user information
+2. Get user information through `UserName`
+3. Get user information whose remark name or wechat account or nickname matches name key of the function
+4. Get user information whose remark name, wechat account and nickname match what are given to the function
+Way 3, 4 can be used together, the following is the demo program:
+ # get your own user information
+ itchat.search_friends()
+ # get user information of specific username
+ itchat.search_friends(userName='@abcdefg1234567')
+ # get user information of function 3
+ itchat.search_friends(name='littlecodersh')
+ # get user information of function 4
+ itchat.search_friends(wechatAccount='littlecodersh')
+ # combination of way 3, 4
+ itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh')
+There are detailed information about searching and getting of massive platforms and chatrooms in document.
+*Download and send attachments*
+The attachment download function of itchat is in Text key of msg
+Name of the file (default name of picture) is in FileName key of msg
+Download function accept one location value (include the file name) and store attachment accordingly.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ itchat.send('@%s@%s' % (
+ 'img' if msg['Type'] == 'Picture' else 'fil', msg['FileName']),
+ msg['FromUserName'])
+ return '%s received' % msg['Type']
+If you don't want a local copy of the picture, you may pass nothing to the function to get a binary string.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ with open(msg.fileName, 'wb') as f:
+ f.write(msg.download())
+*Multi instance*
+You may use the following commands to open multi instance.
+ import itchat
+ newInstance = itchat.new_instance()
+ newInstance.auto_login(hotReload=True, statusStorageDir='newInstance.pkl')
+ @newInstance.msg_register(itchat.content.TEXT)
+ def reply(msg):
+ return msg['Text']
+ newInstance.run()
+*Set callback after login and logout*
+Callback of login and logout are set through `loginCallback` and `exitCallback`.
+ import time
+ import itchat
+ def lc():
+ print('finish login')
+ def ec():
+ print('exit')
+ itchat.auto_login(loginCallback=lc, exitCallback=ec)
+ time.sleep(3)
+ itchat.logout()
+If loginCallback is not set, qr picture will be deleted and cmd will be cleared.
+If you exit through phone, exitCallback will also be called.
+**FAQ**
+Q: Why I can't send files whose name is encoded in utf8?
+A: That's because of the upload setting of requests, you can put `this file <https://gist.github.com/littlecodersh/9a0c5466f442d67d910f877744011705>`__ (for py3 you need `this <https://gist.github.com/littlecodersh/e93532d5e7ddf0ec56c336499165c4dc>`__) into packages/urllib3 of requests package.
+Q: How to use this package to use my wechat as an monitor?
+A: There are two ways: communicate with your own account or with filehelper.
+Q: Why sometimes I can't send messages?
+A: Some account simply can't send messages to yourself, so use `filehelper` instead.
+**Comments**
+If you have any problems or suggestions, you can talk to me in this `issue <https://github.com/littlecodersh/ItChat/issues/1>`__
+Or on `gitter <https://badges.gitter.im/littlecodersh/ItChat.svg>`__.
+
+%package help
+Summary: Development documents and examples for itchat
+Provides: python3-itchat-doc
+%description help
+|Python2| |Python3|
+itchat is an open source api for WeChat, a commonly-used Chinese social networking app.
+Accessing your personal wechat account through itchat in python has never been easier.
+A wechat robot can handle all the basic messages with only less than 30 lines of codes.
+And it's similiar to itchatmp (api for wechat massive platform), learn once and get two tools.
+Now Wechat is an important part of personal life, hopefully this repo can help you extend your personal wechat account's functionality and enbetter user's experience with wechat.
+**Installation**
+ pip install itchat
+**Simple uses**
+With itchat, if you want to send a message to filehelper, this is how:
+ import itchat
+ itchat.auto_login()
+ itchat.send('Hello, filehelper', toUserName='filehelper')
+And you only need to write this to reply personal text messages.
+ import itchat
+ @itchat.msg_register(itchat.content.TEXT)
+ def text_reply(msg):
+ return msg.text
+ itchat.auto_login()
+ itchat.run()
+For more advanced uses you may continue on reading or browse the `document <https://itchat.readthedocs.org/zh/latest/>`__.
+**Try**
+You may have a try of the robot based on this project first:
+|QRCodeOfRobot|
+Here is the `code <https://gist.github.com/littlecodersh/ec8ddab12364323c97d4e36459174f0d>`__.
+**Advanced uses**
+*Special usage of message dictionary*
+You may find out that all the users and messages of itchat are dictionaries by printing them out onto the screen.
+But actually they are useful classes itchat created.
+They have useful keys and useful interfaces, like:
+ @itchat.msg_register(TEXT)
+ def _(msg):
+ # equals to print(msg['FromUserName'])
+ print(msg.fromUserName)
+And like:
+ author = itchat.search_friends(nickName='LittleCoder')[0]
+ author.send('greeting, littlecoder!')
+*Message register of various types*
+The following is a demo of how itchat is configured to fetch and reply daily information.
+ import itchat, time
+ from itchat.content import *
+ @itchat.msg_register([TEXT, MAP, CARD, NOTE, SHARING])
+ def text_reply(msg):
+ msg.user.send('%s: %s' % (msg.type, msg.text))
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ typeSymbol = {
+ PICTURE: 'img',
+ VIDEO: 'vid', }.get(msg.type, 'fil')
+ return '@%s@%s' % (typeSymbol, msg.fileName)
+ @itchat.msg_register(FRIENDS)
+ def add_friend(msg):
+ msg.user.verify()
+ msg.user.send('Nice to meet you!')
+ @itchat.msg_register(TEXT, isGroupChat=True)
+ def text_reply(msg):
+ if msg.isAt:
+ msg.user.send(u'@%s\u2005I received: %s' % (
+ msg.actualNickName, msg.text))
+ itchat.auto_login(True)
+ itchat.run(True)
+*Command line QR Code*
+You can access the QR Code in command line through using this command:
+ itchat.auto_login(enableCmdQR=True)
+Because of width of some character differs from systems, you may adjust the enableCmdQR to fix the problem.
+ # for some linux system, width of block character is one instead of two, so enableCmdQR should be 2
+ itchat.auto_login(enableCmdQR=2)
+Default background color of command line is dark (black), if it's not, you may set enableCmdQR to be negative:
+ itchat.auto_login(enableCmdQR=-1)
+*Hot reload*
+By using the following command, you may reload the program without re-scan QRCode in some time.
+ itchat.auto_login(hotReload=True)
+*User search*
+By using `search_friends`, you have four ways to search a user:
+1. Get your own user information
+2. Get user information through `UserName`
+3. Get user information whose remark name or wechat account or nickname matches name key of the function
+4. Get user information whose remark name, wechat account and nickname match what are given to the function
+Way 3, 4 can be used together, the following is the demo program:
+ # get your own user information
+ itchat.search_friends()
+ # get user information of specific username
+ itchat.search_friends(userName='@abcdefg1234567')
+ # get user information of function 3
+ itchat.search_friends(name='littlecodersh')
+ # get user information of function 4
+ itchat.search_friends(wechatAccount='littlecodersh')
+ # combination of way 3, 4
+ itchat.search_friends(name='LittleCoder机器人', wechatAccount='littlecodersh')
+There are detailed information about searching and getting of massive platforms and chatrooms in document.
+*Download and send attachments*
+The attachment download function of itchat is in Text key of msg
+Name of the file (default name of picture) is in FileName key of msg
+Download function accept one location value (include the file name) and store attachment accordingly.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ msg.download(msg.fileName)
+ itchat.send('@%s@%s' % (
+ 'img' if msg['Type'] == 'Picture' else 'fil', msg['FileName']),
+ msg['FromUserName'])
+ return '%s received' % msg['Type']
+If you don't want a local copy of the picture, you may pass nothing to the function to get a binary string.
+ @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
+ def download_files(msg):
+ with open(msg.fileName, 'wb') as f:
+ f.write(msg.download())
+*Multi instance*
+You may use the following commands to open multi instance.
+ import itchat
+ newInstance = itchat.new_instance()
+ newInstance.auto_login(hotReload=True, statusStorageDir='newInstance.pkl')
+ @newInstance.msg_register(itchat.content.TEXT)
+ def reply(msg):
+ return msg['Text']
+ newInstance.run()
+*Set callback after login and logout*
+Callback of login and logout are set through `loginCallback` and `exitCallback`.
+ import time
+ import itchat
+ def lc():
+ print('finish login')
+ def ec():
+ print('exit')
+ itchat.auto_login(loginCallback=lc, exitCallback=ec)
+ time.sleep(3)
+ itchat.logout()
+If loginCallback is not set, qr picture will be deleted and cmd will be cleared.
+If you exit through phone, exitCallback will also be called.
+**FAQ**
+Q: Why I can't send files whose name is encoded in utf8?
+A: That's because of the upload setting of requests, you can put `this file <https://gist.github.com/littlecodersh/9a0c5466f442d67d910f877744011705>`__ (for py3 you need `this <https://gist.github.com/littlecodersh/e93532d5e7ddf0ec56c336499165c4dc>`__) into packages/urllib3 of requests package.
+Q: How to use this package to use my wechat as an monitor?
+A: There are two ways: communicate with your own account or with filehelper.
+Q: Why sometimes I can't send messages?
+A: Some account simply can't send messages to yourself, so use `filehelper` instead.
+**Comments**
+If you have any problems or suggestions, you can talk to me in this `issue <https://github.com/littlecodersh/ItChat/issues/1>`__
+Or on `gitter <https://badges.gitter.im/littlecodersh/ItChat.svg>`__.
+
+%prep
+%autosetup -n itchat-1.3.10
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-itchat -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed Apr 12 2023 Python_Bot <Python_Bot@openeuler.org> - 1.3.10-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..fe1d66c
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+87ba7c5b1d08866558abaf9a8c4eaee5 itchat-1.3.10.tar.gz