[Servers] Refines c9a09817

This commit is contained in:
Valéry Febvre 2023-03-26 23:42:21 +02:00
parent c9a09817ac
commit bda9363142
4 changed files with 39 additions and 23 deletions

View File

@ -62,7 +62,7 @@ Komikku can be built in a Python virtual environment. However, some tools and de
# Install system dependencies
apt install make meson gettext appstream-util desktop-file-utils
apt install python3 python3-dev python3-venv
apt install libadwaita-1-dev libcairo2-dev libnotify-dev libmagic1 libwebkit2gtk-5.0-0
apt install libadwaita-1-dev libcairo2-dev libnotify-dev libmagic1 libwebkitgtk-6.0-4
```
2. Clone the repository:

View File

@ -1,7 +1,7 @@
{
"app-id" : "info.febvre.Komikku",
"runtime" : "org.gnome.Platform",
"runtime-version" : "43",
"runtime-version" : "44",
"sdk" : "org.gnome.Sdk",
"sdk-extensions" : [
"org.freedesktop.Sdk.Extension.rust-stable"

View File

@ -10,19 +10,18 @@ gi.require_version('Adw', '1')
gi.require_version('Gtk', '4.0')
gi.require_version('Soup', '3.0')
try:
gi.require_version('WebKit', '6.0')
from gi.repository import WebKit
except ValueError:
gi.require_version('WebKit2', '5.0')
from gi.repository import WebKit2 as WebKit
from gi.repository import Adw
from gi.repository import Gdk
from gi.repository import GLib
from gi.repository import Gsk
from gi.repository import Gtk
from gi.repository import Soup
try:
gi.require_version('WebKit', '6.0')
from gi.repository import WebKit
except ValueError:
gi.require_version('WebKit2', '5.0')
from gi.repository import WebKit2 as WebKit
from komikku.models.database import VERSION as DB_VERSION
from komikku.utils import check_cmdline_tool

View File

@ -12,6 +12,10 @@ import platform
import requests
import time
from gi.repository import Gio
from gi.repository import GLib
from gi.repository import GObject
from gi.repository import Gtk
try:
gi.require_version('WebKit', '6.0')
from gi.repository import WebKit
@ -21,11 +25,6 @@ except ValueError:
from gi.repository import WebKit2 as WebKit
IS_WEBKITGTK6 = False
from gi.repository import Gio
from gi.repository import GLib
from gi.repository import GObject
from gi.repository import Gtk
from komikku.servers.exceptions import CfBypassError
from komikku.utils import get_cache_dir
@ -227,7 +226,10 @@ def bypass_cf(func):
}
}, 100);
"""
webview.webkit_webview.run_javascript(js, None, None)
if IS_WEBKITGTK6:
webview.webkit_webview.evaluate_javascript(js, -1)
else:
webview.webkit_webview.run_javascript(js, None, None)
def on_load_failed(_webkit_webview, _event, uri, _gerror):
nonlocal error
@ -318,11 +320,16 @@ def get_page_html(url, user_agent=None, settings=None, wait_js_code=None):
nonlocal error
nonlocal html
js_result = webview.webkit_webview.run_javascript_finish(result)
if js_result:
js_value = js_result.get_js_value()
if js_value:
html = js_value.to_string()
if IS_WEBKITGTK6:
js_result = webview.webkit_webview.evaluate_javascript_finish(result)
if js_result:
html = js_result.to_string()
else:
js_result = webview.webkit_webview.run_javascript_finish(result)
if js_result:
js_value = js_result.get_js_value()
if js_value:
html = js_value.to_string()
if html is None:
error = f'Failed to get chapter page html: {url}'
@ -335,9 +342,15 @@ def get_page_html(url, user_agent=None, settings=None, wait_js_code=None):
if wait_js_code:
# Wait that everything needed has been loaded
webview.webkit_webview.run_javascript(wait_js_code, None, None, None)
if IS_WEBKITGTK6:
webview.webkit_webview.evaluate_javascript(wait_js_code, -1)
else:
webview.webkit_webview.run_javascript(wait_js_code, None, None, None)
else:
webview.webkit_webview.run_javascript('document.documentElement.outerHTML', None, on_get_html_finish, None)
if IS_WEBKITGTK6:
webview.webkit_webview.evaluate_javascript('document.documentElement.outerHTML', -1, None, None, None, on_get_html_finish)
else:
webview.webkit_webview.run_javascript('document.documentElement.outerHTML', None, on_get_html_finish, None)
def on_load_failed(_webkit_webview, _event, _uri, gerror):
nonlocal error
@ -351,7 +364,11 @@ def get_page_html(url, user_agent=None, settings=None, wait_js_code=None):
if webview.webkit_webview.props.title == 'ready':
# Everything we need has been loaded, we can retrieve page HTML
webview.webkit_webview.run_javascript('document.documentElement.outerHTML', None, on_get_html_finish, None)
if IS_WEBKITGTK6:
webview.webkit_webview.evaluate_javascript('document.documentElement.outerHTML', -1, None, None, None, on_get_html_finish)
else:
webview.webkit_webview.run_javascript('document.documentElement.outerHTML', None, on_get_html_finish, None)
elif webview.webkit_webview.props.title == 'abort':
error = f'Failed to get chapter page html: {url}'
webview.close()