PyQt5/PySide2亚行

2024-10-02 12:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为youtube和其他媒体创建一个浮动浏览器。
我发现了一些类似于PyQt4/PySide的adblock的旧示例,但现在它们已被弃用,我无法将它们翻译成pyside2qwebengineview。在

你知道如何在QWebEngineView中插入adblock吗?在

旧版本链接How would you adblock using Python?


Tags: you示例youtube链接浏览器媒体howusing
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:33

要过滤url,必须实现QWebEngineUrlRequestInterceptor,如果要阻止url,则必须调用QWebEngineUrlRequestInfo的block(True)函数。对于筛选,我将使用adblockparser库和easylist.txt。在

from PyQt5 import QtCore, QtWidgets, QtWebEngineCore, QtWebEngineWidgets
from adblockparser import AdblockRules

with open("easylist.txt") as f:
    raw_rules = f.readlines()
    rules = AdblockRules(raw_rules)

class WebEngineUrlRequestInterceptor(QtWebEngineCore.QWebEngineUrlRequestInterceptor):
    def interceptRequest(self, info):
        url = info.requestUrl().toString()
        if rules.should_block(url):
            print("block::::::::::::::::::::::", url)
            info.block(True)


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    interceptor = WebEngineUrlRequestInterceptor()
    QtWebEngineWidgets.QWebEngineProfile.defaultProfile().setRequestInterceptor(interceptor)
    view = QtWebEngineWidgets.QWebEngineView()
    view.load(QtCore.QUrl("https://www.youtube.com/"))
    view.show()
    sys.exit(app.exec_())

相关问题 更多 >

    热门问题