Skip to content

Commit 5666827

Browse files
committed
feat: make webview optional
1 parent bc5cd9d commit 5666827

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

.github/workflows/build.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ jobs:
1919
- name: Install pyinstaller and dependencies
2020
run: pip3 install --upgrade pyinstaller -r requirements.txt
2121

22+
- name: Optional dependencies (WebView)
23+
run: pip3 install --upgrade pywebview
24+
if: runner.os != 'macOS'
25+
2226
- name: Set strip on Linux and Mac
2327
id: strip
2428
run: echo "option=--strip" >> $GITHUB_OUTPUT

nile/api/authorization.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
import uuid
1111
import json
1212

13-
from nile.utils import weblogin
14-
15-
1613
class AuthenticationManager:
1714
def __init__(self, session, config_manager, library_manager):
1815
self.logger = logging.getLogger("AUTH_MANAGER")
@@ -190,14 +187,16 @@ def handle_login(self, code, client_id, code_verifier, serial):
190187
self.library_manager.sync()
191188

192189
def login(self, non_interactive=False, gui=False):
190+
from nile.utils import weblogin
191+
193192
code_verifier = self.generate_code_verifier()
194193
challenge = self.generate_challange(code_verifier)
195194

196195
serial = self.generate_device_serial()
197196
client_id = self.generate_client_id(serial)
198197

199198
url = self.get_auth_url(client_id, challenge)
200-
if gui:
199+
if weblogin.webview_available and gui:
201200
weblogin.web_login(url, self.handle_redirect)
202201
else:
203202
if non_interactive:

nile/utils/weblogin.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import datetime
2-
import json
3-
import ssl
4-
from urllib import error, request
5-
from urllib.parse import urlparse, parse_qs
1+
import logging
62

7-
import webview
8-
import os
3+
webview_available = True
94

5+
try:
6+
import webview
7+
except Exception:
8+
log = logging.getLogger('webview')
9+
log.debug('Webview unavailable')
10+
webview_available = False
1011

1112

1213
def web_login(url, callback):

0 commit comments

Comments
 (0)