fit-webview-bridge 0.2.2a2__cp313-cp313-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of fit-webview-bridge might be problematic. Click here for more details.
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import builtins as _builtins
|
|
2
|
+
import importlib
|
|
3
|
+
import sys as _sys
|
|
4
|
+
|
|
5
|
+
_wkm = importlib.import_module(__name__ + ".wkwebview")
|
|
6
|
+
_sys.modules.setdefault("wkwebview", _wkm)
|
|
7
|
+
setattr(_wkm, "wkwebview", _wkm)
|
|
8
|
+
setattr(_builtins, "wkwebview", _wkm)
|
|
9
|
+
|
|
10
|
+
from .wkwebview import WKWebViewWidget as SystemWebView
|
|
Binary file
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: fit-webview-bridge
|
|
3
|
+
Version: 0.2.2a2
|
|
4
|
+
Summary: Qt native WebView bridge with PySide6 bindings
|
|
5
|
+
Author: FIT Project
|
|
6
|
+
License: LGPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/fit-project/fit-webview-bridge
|
|
8
|
+
Requires-Python: <3.14,>=3.11
|
|
9
|
+
Requires-Dist: PySide6==6.9.0
|
|
10
|
+
Requires-Dist: shiboken6==6.9.0
|
|
11
|
+
Requires-Dist: shiboken6-generator==6.9.0
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
|
|
14
|
+
# FIT WebView Bridge
|
|
15
|
+
|
|
16
|
+
### Description
|
|
17
|
+
|
|
18
|
+
**FIT WebView Bridge** is a cross‑platform Qt widget (C++/Objective‑C++) with **PySide6** bindings that wraps the OS‑native web engines:
|
|
19
|
+
- **Windows →** Edge WebView2
|
|
20
|
+
- **macOS →** WKWebView
|
|
21
|
+
- **Linux →** WebKitGTK (with **GStreamer** for codecs)
|
|
22
|
+
|
|
23
|
+
It exposes a **unified Python API** for browser control and enables **forensic viewing/capture** of content, including media requiring proprietary codecs (e.g., **H.264/AAC**), **without** custom QtWebEngine builds or codec redistribution burdens (system codecs are used). All **controls** (UI and app logic) are **delegated to the PySide window**.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Why this project
|
|
27
|
+
QtWebEngine (Chromium) **does not enable proprietary codecs** by default, and redistributing them requires **licensing**. Alternatives (building QtWebEngine with codecs or using QtWebView/QML) have portability/control limitations. The chosen path is to **leverage native engines**, achieving codec compatibility and **full control** via a Python API.
|
|
28
|
+
|
|
29
|
+
### Repository layout
|
|
30
|
+
```
|
|
31
|
+
fit-webview-bridge/
|
|
32
|
+
├─ CMakeLists.txt
|
|
33
|
+
├─ cmake/ # Find*.cmake, toolchains, helpers
|
|
34
|
+
├─ include/fitwvb/ # Public headers (API)
|
|
35
|
+
├─ src/
|
|
36
|
+
│ ├─ core/ # Facade / common interfaces
|
|
37
|
+
│ ├─ win/ # Edge WebView2 backend (C++)
|
|
38
|
+
│ ├─ macos/ # WKWebView backend (Obj-C++)
|
|
39
|
+
│ └─ linux/ # WebKitGTK backend (C++)
|
|
40
|
+
├─ bindings/pyside6/ # Shiboken6: typesystem & config
|
|
41
|
+
├─ tests/ # Unit / integration
|
|
42
|
+
└─ examples/ # Minimal PySide6 demo app
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Interface (methods/slots + signals)
|
|
46
|
+
**Methods / slots**
|
|
47
|
+
- `load(url)`
|
|
48
|
+
- `back()`
|
|
49
|
+
- `forward()`
|
|
50
|
+
- `reload()`
|
|
51
|
+
- `stop()`
|
|
52
|
+
- `setHtml(html, baseUrl)`
|
|
53
|
+
- `evalJs(script, callback)`
|
|
54
|
+
|
|
55
|
+
**Signals**
|
|
56
|
+
- `urlChanged(QUrl)`
|
|
57
|
+
- `titleChanged(QString)`
|
|
58
|
+
- `loadProgress(int)`
|
|
59
|
+
- `loadFinished(bool)`
|
|
60
|
+
- `consoleMessage(QString)`
|
|
61
|
+
|
|
62
|
+
> Note: the API is **uniform** across OSes; implementations delegate to the native engine.
|
|
63
|
+
|
|
64
|
+
### Prerequisites
|
|
65
|
+
**Common**
|
|
66
|
+
- **CMake** (>= 3.24 recommended)
|
|
67
|
+
- **Ninja** (generator)
|
|
68
|
+
- **Python** 3.9+
|
|
69
|
+
- **PySide6** and **Shiboken6** (for Python bindings)
|
|
70
|
+
- Platform build toolchain
|
|
71
|
+
|
|
72
|
+
**Windows**
|
|
73
|
+
- **MSVC** (Visual Studio 2022 or Build Tools) and Windows SDK
|
|
74
|
+
- **Microsoft Edge WebView2 Runtime**
|
|
75
|
+
- **WebView2 SDK** (NuGet/vcpkg)
|
|
76
|
+
|
|
77
|
+
**macOS**
|
|
78
|
+
- **Xcode** + Command Line Tools
|
|
79
|
+
- **Objective‑C++** enabled (.mm)
|
|
80
|
+
- Frameworks: `WebKit`, `Cocoa`
|
|
81
|
+
|
|
82
|
+
**Linux**
|
|
83
|
+
- **GCC/Clang**, `pkg-config`
|
|
84
|
+
- **WebKitGTK** dev packages (e.g., `webkit2gtk-4.1` or distro equivalent)
|
|
85
|
+
- **GStreamer** (base + required plugins for codecs)
|
|
86
|
+
|
|
87
|
+
### Build (indicative)
|
|
88
|
+
```bash
|
|
89
|
+
git clone https://github.com/fit-project/fit-webview-bridge.git
|
|
90
|
+
cd fit-webview-bridge
|
|
91
|
+
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_PYSIDE6_BINDINGS=ON
|
|
92
|
+
cmake --build build
|
|
93
|
+
# (optional) ctest --test-dir build
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Examples
|
|
97
|
+
PySide6 samples in `examples/` demonstrate URL loading, JS injection, and signal handling.
|
|
98
|
+
|
|
99
|
+
### Codec & licensing notes
|
|
100
|
+
The project **does not** redistribute proprietary codecs: it leverages codecs **already provided by the OS**. End‑user usage must comply with the relevant licenses/formats.
|
|
101
|
+
|
|
102
|
+
### Project status
|
|
103
|
+
Initial/alpha (API subject to change).
|
|
104
|
+
|
|
105
|
+
# Fit Web — Project rationale and options for proprietary codecs
|
|
106
|
+
|
|
107
|
+
**Fit Web** is the FIT project's *scraper* module designed to **forensically acquire and preserve web content**: <https://github.com/fit-project/fit-web>.
|
|
108
|
+
|
|
109
|
+
Like the other modules, **Fit Web** is based on **PySide** (Qt for Python). It currently uses **QtWebEngine**, which is a **Chromium** wrapper.
|
|
110
|
+
|
|
111
|
+
## The problem
|
|
112
|
+
By default, Chromium **does not enable proprietary audio/video codecs**, notably **H.264** and **AAC**.
|
|
113
|
+
|
|
114
|
+
## Options considered
|
|
115
|
+
|
|
116
|
+
### 1) Build QtWebEngine with proprietary codecs
|
|
117
|
+
Enable the `-webengine-proprietary-codecs` option.
|
|
118
|
+
Documentation: <https://doc.qt.io/qt-6/qtwebengine-overview.html>
|
|
119
|
+
|
|
120
|
+
**Drawbacks**
|
|
121
|
+
- Must be done for **all supported operating systems**.
|
|
122
|
+
- The build requires **very powerful machines** (e.g., difficulties on a MacBook Air M2 with 16 GB RAM).
|
|
123
|
+
- **Licensing**: distributing H.264 and AAC **requires a license**.
|
|
124
|
+
|
|
125
|
+
### 2) Use QtWebView
|
|
126
|
+
QtWebView relies on **the OS’s native web APIs**; for proprietary‑codec content it uses **the system’s codecs**.
|
|
127
|
+
**Pros**: no custom builds, no direct license handling.
|
|
128
|
+
**Cons**: the UI layer is **QML**, geared toward lightweight (often mobile) UIs, so it **doesn’t provide full browser control** compared to QtWebEngine.
|
|
129
|
+
|
|
130
|
+
Documentation: <https://doc.qt.io/qt-6/qtwebview-index.html>
|
|
131
|
+
|
|
132
|
+
### 3) Implement a native Qt widget (C/C++) per OS
|
|
133
|
+
Develop a Qt widget (usable from **PySide6**) that embeds the system’s web engine:
|
|
134
|
+
|
|
135
|
+
- **Windows →** Edge WebView2
|
|
136
|
+
- **macOS →** WKWebView
|
|
137
|
+
- **Linux →** WebKitGTK (with **GStreamer** for codecs)
|
|
138
|
+
|
|
139
|
+
**Advantages**
|
|
140
|
+
- **No redistribution licensing**: leverage the codecs already provided by the OS.
|
|
141
|
+
- A **common API** can be exposed to PySide6.
|
|
142
|
+
- **More control** than QtWebView, without QML’s limitations.
|
|
143
|
+
|
|
144
|
+
**Disadvantages**
|
|
145
|
+
- **Medium‑to‑high complexity** to implement.
|
|
146
|
+
- Requires **C++** and, on macOS, **Objective‑C++**.
|
|
147
|
+
- Requires **custom CMake** to include libraries and linking.
|
|
148
|
+
|
|
149
|
+
---
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
fit_webview_bridge/__init__.py,sha256=KQIE2-ZcVVqRpcrC4X9e9Iub-6uXXKlQBoyRk_I9RP8,293
|
|
2
|
+
fit_webview_bridge/wkwebview.cpython-313-darwin.so,sha256=c2Bsdc_eEU0Uc7GB91Th1Hfxso9-a6PrF2Xhss3z10I,261408
|
|
3
|
+
fit_webview_bridge-0.2.2a2.dist-info/METADATA,sha256=e6o218Wh7nObjB0zZxETGi0JaESSW0tbDVB5u1452tw,5721
|
|
4
|
+
fit_webview_bridge-0.2.2a2.dist-info/WHEEL,sha256=xL_I_TleH-YV9h3oMcQi1F0DSqA1tyOenDLO1uzk5E8,114
|
|
5
|
+
fit_webview_bridge-0.2.2a2.dist-info/RECORD,,
|