首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静音QWebPage - PyQt

静音QWebPage - PyQt
EN

Stack Overflow用户
提问于 2021-10-27 22:43:07
回答 2查看 45关注 0票数 0

我找了几个小时,想找到一个让QWebPage静音的好方法。我不想显示网页。我只是获取了它,然后评估了其中的一行javascript代码。然后我关闭QPageView。

但是该网页包含一些mp3流,因此在评估javascript代码时,我可以听到来自该流的消息。我试着切断mp3的声音,直到终止QWebBrowser。

我使用QWebKit而不是QWebEngine,因为msys posix platoform (link)没有可用的包。

所以问题只有一两秒钟。我在QWebSettings page上找不到任何有用的东西

在文件: C:\mysys64\mingw64\include\QtWebKit\5.212.0\QtWebKit\private\qwebpreferences_p.h的第108行中,我发现了以下内容:

代码语言:javascript
复制
void setWebAudioEnabled(bool enable);

因此,不知何故,这可能是一种使QWebView或QWebPage静音的方法。

我在stackoverflow中找到了一个答案,它在页面加载时评估javascript代码,以静音页面拥有的所有视频和音频标签。但是这个答案也有一个延迟问题。

那么,如何在python QWebKit - QWebPage中静音网页上的所有声音呢?

EN

回答 2

Stack Overflow用户

发布于 2021-10-27 22:50:47

你有没有考虑过使用QWebPage.ToggleMediaMute?根据C++文档:

静音或取消静音悬停的音频或视频元素。(在Qt 5.2中添加)

这意味着您应该能够从源代码中获取QWebPage并调用qwp.action(QWebPage.ToggleMediaMute),以便将页面中的音频静音。

票数 0
EN

Stack Overflow用户

发布于 2021-10-28 07:02:17

使用selenium解决了这个问题。

此代码片段

  1. pip install selenium
  2. Download from this link
  3. Run geckodriver.exe

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
url = "..."
javascript_code = "..."
firefox_options = Options()
firefox_options.add_argument("--headless")
wd = webdriver.Firefox(executable_path=r'G:\Geckodriver\geckodriver.exe',options=firefox_options)

wd.get(url)
javascript_output = str(wd.execute_script("return "+javascript_code)).strip()

对于这种解决方案,我认为有两个问题:

  1. 如果用户没有在电脑上安装火狐怎么办?我可以尝试使用except块来捕获此错误吗?

  1. 正常网页会有延迟(~10秒)。我认为这并不是一个很大的延迟。:)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69746277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档