whalesong是一个远程管理webapps的python库。目前whatsappweb已经实现

whalesong的Python项目详细描述


<…| badge python版本image::https://img.shields.io/pypi/pyversions/whalesong.svg
:alt:python版本




……|徽章版本图像::https://img.shields.io/pypi/v/whalesong.svg
:alt:last version
:目标:https://pypi.org/project/whalesong/

……|徽章许可证图像::https://img.shields.io/pypi/l/whalesong.svg
:alt:license




…|徽章状态图像::https://img.shields.io/pypi/status/whalesong.svg
:alt:status

警告:

**新版本0.7.0**


新版本定义了一些新的要求,并提交了一些API更改。


0.7.0版引入了Chromium浏览器的新驱动程序。它需要在
驱动程序api的基础上进行一些更改。它不应该影响任何人。但请注意。



…警告::

**新版本0.7.0**

>流模型现在使用枚举。这意味着,如果您检查流状态
,您必须知道它们不再是字符串,现在它们是枚举。查看
:类:`documentation<;whalesong.managers.stream.stream>;`.



==
whalesong
==



whalesong是一个异步python库,用于远程管理webapp。
whatsappweb目前是使用Firefox实现
-
-
文档*Geckodriver
*Firefox 50+

……………
使用Chromium
……………


*安装后执行此操作:

……代码块::bash


$pyppeteer install



……………
development requirements


*node(仅用于开发)
*npm(仅用于开发)
*make(仅用于开发)

----
安装
----


从"0.7.0"版开始Whalesong引入了新的"浏览器后端"<;浏览器后端>;`。这意味着您必须
决定要使用哪个浏览器后端。所以,取决于它:

…提示:

您可以毫无问题地安装两者。

……………
使用firefox
………


代码块::bash

$pip3安装whalesong[firefox]



…_使用铬:

……………
使用计时
……………



代码块::bash

$pip3安装whalesong[chromium]



代码块::bash

$pyppeteer install


它将下载该后端所需的修补chromium分发版。

--
features
--


*非阻塞驱动程序。它可以同时执行多个操作。
*监视器功能。python代码可以对javascript事件做出反应。
*迭代器特性。大型项目列表作为异步迭代器传递给python。
*持久浏览器配置文件。
*创建新功能的简单方法。
*ampersandjs/backbonejs模型和集合监视器。
*ampersandjs/backbonejs字段监视器。
*监视本地存储。
*截图(页面和css元素)。
*由Asyncio提供支持。
*Firefox后端。
*Chromium后端。



WhatsApp的功能



*监视连接状态。
*监视QR更改。
*监视流状态。
*它能够刷新QR。
*它能够接管会话。
*列出聊天记录。
*列出联系人。
*列出邮件
*监视新邮件。
*监视未读邮件。
*监视邮件确认。
*监视新联系人。
*监视新聊天记录。
*发送文本消息。
*回复消息。
*发送vCard消息。
*发送媒体(图像/视频/pdf)消息。
*发送可视聊天信息。
*创建组
*管理组(添加/取消/升级/降级人员)
*自动加载链接预览
*允许检查联系人是否在whatsapp上注册。
*加载并发送贴纸(即使是引用的消息)。
*状态监视器。
*配置文件和组的图片管理。
*(un)pin和(un)存档聊天。
*报告垃圾邮件。
*(un)星形消息。
*状态管理。
*pushname管理。
*显示信息管理。
*实时位置管理。
*静音管理。
*它可以撤销消息(删除其他消息)。
*列出和管理WhatsApp状态版本3(故事)。

--
https://whalesong.readthedocs.io/en/latest/changelog.html>;`

----
todo
----


*测试、测试、测试。
*文档。(`work-in-progress<;https://whalesong.readthedocs.io>;``uu)
*更多示例。
*缺少whatsapp功能。(正在工作)
*为其他webapp实现scriptlet(可能是"android消息"<;https://messages.android.com/>;```.
*删除selenium和geckodriver。(正在工作)
*创建/使用具有异步接口(如木偶)的小型无头浏览器。(正在工作)
*推送结果。避免连续轮询。(正在工作)



…_浏览器后端:

----
所有后端都有一个管理webview的接口,whalesong就是用这个接口来管理应用程序的。根据浏览器的不同,这个接口会发生变化,但有一个标准接口,名为https://developer.mozilla.org/en-us/docs/web/webdriver>;`。Firsts Whalesong版本曾经使用
`Selenium<;https://www.seleniumhq.org/>;``库来与Firefox浏览器通信。
目前,此后端是默认的,**但在下一个版本中将不推荐使用,并在1.0版中删除**。






这是开发的第一个后端。它使用'selenium<;https://www.seleniumhq.org/>;``库和
`geckodriver<;https://firefox source docs.mozilla.org/testing/geckodriver/geckodriver/>;``与
firefox进程通信。它是测试最多的(最多,但不是很好)。



pros
=====

*测试过(或多或少)。
*使用Firefox(我更喜欢在Chromium前使用)。


===

*Selenium是一个巨大的库。它对于它的创建是很好的,但对于whalsong却不是。
*selenium是一个同步库。这是个问题,因为whalesong是一个异步库。这意味着,whalesong创建了一个线程池来与selenium通信。

*我们需要geckodriver。Firefox本身并不实现WebDriver协议。firefox有自己的
协议,名为'mariotte<;https://firefox source docs.mozilla.org/testing/mariotte/mariotte/intro.html>;`.
因此geckodriver用作webdriver协议和mariotte协议之间的代理。

*因为webdriver是一个同步协议。为了获得新的事件,Whalesong必须不断地投票给Firefox。
没有办法让Firefox主动通知Whalesong。这意味着,whalesong正在以间隔(默认为0.5秒)连续轮询新结果。注::

**Firefox后端只有一种生存方式:**


目前)。/>
当前默认为Firefox后端。但下一个版本会有所改变。因此,为了确保您使用
firefox后端,您必须用正确的驱动程序实例化whalesong。代码块::python3

from whalesong import whalesong
from whalesong.driver_firefox import whalesongdriver

whalepap=whalesong(driver=driver)

后端是新的。它是使用'pyppetter<;https://github.com/miyakogi/pyppeteer>;``来实现的,它的灵感来自于'puppetter<;https://pptr.dev/>;``(主要用于测试的控制铬无头的'node'库)。它使用
`devtools protocol<;https://chromedevtools.github.io/devtools protocol/>;``来与浏览器通信。
它是一个通过websocket的异步协议。

===

*不再轮询!当结果产生时,它会主动发送给Whalesong。不再"睡觉",不再等待。
*占用空间小(至少看起来像是铬)。
*没有额外的进程(不再有壁虎河)。
*应用程序模式。没有选项卡,没有url字段。
*没有大型库(没有更多的selenium)。
*没有更多的线程与同步库通信。


contras
==

*它是chromium。它使用blink:over vitaminized webkit渲染。内存占用器。
*当前Pypperter有一个错误。它在20秒后使连接松动。它在https://github.com/miyakogi/pyppeteer/pull/160>;``中得到解决,但尚未得到批准(一些测试错误)。

*它使用puppetter的修补铬版本。Whalesong需要此修补程序,因为它使用"runtime.addbinding"
命令。它在常规稳定版本中不可用。因此,在使用后端之前,必须使用chromium下载它。

*当使用窗口执行chromium时(没有headless),就不可能获得whastappweb qr。


代码块::python3

from whalesong import whalesong
from whalesong.driver_chromium import whalesongdriver

whalap=whalesong(driver=driver)

………
其他后端
……………


不,没有其他后端。但我在考虑其他的可能性:

*直接使用webkit创建一个小的足迹webview(gtk或qt方式不是一个选项)。
*直接使用伺服创建一个小的足迹webview(我想学习rust语言)。

**当然,任何贡献都将受到欢迎(非常欢迎)。**

——
——
——
——
——
——
……………
——
——
——
——
——
代码块::bash


$make requirements


代码块::bash

$make build js

………..
美化代码
………..


必须先美化代码才能发出请求。不接受难看的代码。

…代码块::bash


$make beautify

--
示例
--


请参见"文档<;https://whalesong.readthedocs.io/en/latest/examples.html>;`

————————————————————————————————————————————————————————————————————————————————————————————/>
**作者:**`@jabolina<;https://github.com/jabolina>;`

**存储库:**https://github.com/jabolina/whalesong js


----
法律
----


本代码不属于、授权、维护,由whatsapp
或其任何附属公司或子公司赞助或背书。这是一款独立的非官方软件。
请自行承担使用风险。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过TestNG中的Selenium Webdriver使用文本属性识别元素   java Maven:检查网站是否在部署后运行   java Android:是否可以使用不同铃声的双sim卡来接收每个sim卡的呼叫?   java不知道如何运行这个pdfbox注释示例   java无线电组作为循环页面指示器   java SonarQube漏洞:用POJO/DTO替换此持久实体   安全性将证书导入Java密钥库,JVM将忽略新证书   java如何加载yaml属性,即使用Jackson数据格式的地图列表?   java Gradlew不工作(失败:使用exeption构建。)   java对象。要求我的dialogflow聊天机器人应用程序没有任何问题   java如何使HashSet<T>在HashSet时调用T.equals(Object)。调用add()   插件1.11 Java Spigot/Bukkit编程将HashMap保存/加载到配置中。yml   James中的javasentbox   java正则表达式删除的特殊字符   java如何在AmazonS3上使用预先签名的url进行复制?   java在JOptionPane中插入双变量   排序按字母顺序对字符串排序而不进行比较的程序。至(Java)   Tomcat应用程序中的java随机ConcurrentModificationException