Skip to content

Commit bba32df

Browse files
committed
refactor: optimize data list construction and hidden imports in macOS and general spec files
1 parent 3e3ba77 commit bba32df

File tree

3 files changed

+151
-63
lines changed

3 files changed

+151
-63
lines changed

.github/workflows/python-package.yml

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,51 @@ jobs:
4343
pyinstaller --noconfirm --onefile --uac-admin --icon "frontend/public/favicon.ico" `
4444
--paths "venv/Lib/site-packages" `
4545
--add-data "backend;." `
46-
--add-data "venv/Lib/site-packages/fake_useragent/data;fake_useragent/data" `
47-
--add-data "venv/Lib/site-packages/fake_useragent;fake_useragent" `
48-
--add-data "venv/Lib/site-packages/streamlink;streamlink" `
49-
--add-data "venv/Lib/site-packages/websockets;websockets" `
50-
--add-data "venv/Lib/site-packages/tls_client;tls_client" `
51-
--add-data "venv/Lib/site-packages/tls_client/dependencies;tls_client/dependencies" `
52-
--add-data "venv/Lib/site-packages/cffi;cffi" `
53-
--add-data "venv/Lib/site-packages/psutil;psutil" `
5446
--collect-data fake_useragent `
5547
--collect-submodules streamlink `
5648
--collect-submodules websockets `
5749
--collect-submodules tls_client `
58-
--collect-submodules cffi `
50+
--collect-submodules flask `
51+
--collect-submodules flask_cors `
52+
--collect-submodules flask_socketio `
53+
--collect-submodules gevent `
54+
--collect-submodules engineio `
55+
--hidden-import flask `
56+
--hidden-import flask_cors `
57+
--hidden-import flask_socketio `
58+
--hidden-import socketio `
59+
--hidden-import werkzeug `
60+
--hidden-import gevent `
61+
--hidden-import gevent.socket `
62+
--hidden-import gevent.select `
63+
--hidden-import gevent._socket3 `
64+
--hidden-import gevent.resolver.thread `
65+
--hidden-import gevent.resolver.ares `
66+
--hidden-import gevent.resolver.blocking `
67+
--hidden-import gevent.event `
68+
--hidden-import gevent.queue `
69+
--hidden-import dns `
70+
--hidden-import dns.resolver `
71+
--hidden-import requests `
72+
--hidden-import urllib3 `
73+
--hidden-import certifi `
74+
--hidden-import websockets `
75+
--hidden-import websockets.legacy `
76+
--hidden-import websockets.legacy.client `
77+
--hidden-import websockets.legacy.server `
78+
--hidden-import streamlink `
79+
--hidden-import streamlink.plugins `
80+
--hidden-import fake_useragent `
81+
--hidden-import tls_client `
82+
--hidden-import tls_client.dependencies `
5983
--hidden-import rich `
60-
--hidden-import trio `
84+
--hidden-import rich.console `
85+
--hidden-import rich.progress `
86+
--hidden-import psutil `
87+
--hidden-import cffi `
88+
--hidden-import engineio `
89+
--hidden-import engineio.async_drivers `
90+
--hidden-import engineio.async_drivers.gevent `
6191
"backend/main.py" `
6292
--name "KickViewerBOT.exe"
6393
@@ -115,7 +145,14 @@ jobs:
115145
steps:
116146
- name: Extract tag name
117147
id: get_version
118-
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
148+
run: |
149+
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
150+
# Check if tag contains beta, alpha, rc, or preview
151+
if [[ "${GITHUB_REF#refs/tags/}" =~ (beta|alpha|rc|preview) ]]; then
152+
echo "IS_PRERELEASE=true" >> $GITHUB_OUTPUT
153+
else
154+
echo "IS_PRERELEASE=false" >> $GITHUB_OUTPUT
155+
fi
119156
120157
- name: Download all artifacts
121158
uses: actions/download-artifact@v4
@@ -130,6 +167,7 @@ jobs:
130167
with:
131168
tag_name: ${{ github.ref }}
132169
release_name: Release ${{ steps.get_version.outputs.VERSION }}
170+
prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }}
133171

134172
body: |
135173
# 🚀 KickViewerBOT Beta V3 - Major Architecture Upgrade
@@ -239,7 +277,6 @@ jobs:
239277
*Thank you for being part of the KickViewerBOT Beta program! Your feedback helps make this tool better for everyone.* 🙏
240278
241279
draft: false
242-
prerelease: false
243280

244281
- name: Upload Windows Release Asset
245282
uses: actions/upload-release-asset@v1

KickViewerBOT-macOS.spec

Lines changed: 51 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,51 +25,76 @@ except ImportError:
2525
import site
2626
site_packages = site.getsitepackages()[0]
2727

28-
# Build data list with existence checks
28+
# Build data list - only include actual data files, not Python packages
2929
datas = [
3030
('backend', '.'),
3131
]
3232

33-
# Add site-packages dependencies with existence checks
34-
dependencies = [
35-
('fake_useragent', 'fake_useragent'),
36-
('streamlink', 'streamlink'),
37-
('websockets', 'websockets'),
38-
('tls_client', 'tls_client'),
39-
('cffi', 'cffi'),
40-
('psutil', 'psutil'),
41-
]
42-
43-
for dep, target in dependencies:
44-
dep_path = os.path.join(site_packages, dep)
45-
if os.path.exists(dep_path):
46-
datas.append((dep_path, target))
47-
4833
# Add fake_useragent data files if they exist
4934
fake_useragent_data = os.path.join(site_packages, 'fake_useragent', 'data')
50-
fake_useragent_json = os.path.join(site_packages, 'fake_useragent', 'data.json')
51-
5235
if os.path.exists(fake_useragent_data):
5336
datas.append((fake_useragent_data, 'fake_useragent/data'))
54-
if os.path.exists(fake_useragent_json):
55-
datas.append((fake_useragent_json, 'fake_useragent/data.json'))
5637

5738
a = Analysis(
5839
['backend/main.py'],
5940
pathex=[],
6041
binaries=tls_client_binaries,
6142
datas=datas,
6243
hiddenimports=[
63-
'rich',
64-
'trio',
65-
'resource',
44+
# Flask and related
45+
'flask',
46+
'flask_cors',
47+
'flask_socketio',
48+
'socketio',
49+
'werkzeug',
50+
'gevent',
51+
'gevent.socket',
52+
'gevent.select',
53+
'gevent._socket3',
54+
'gevent.resolver.thread',
55+
'gevent.resolver.ares',
56+
'gevent.resolver.blocking',
57+
'gevent.event',
58+
'gevent.queue',
59+
'dns',
60+
'dns.dnssec',
61+
'dns.e164',
62+
'dns.hash',
63+
'dns.namedict',
64+
'dns.tsigkeyring',
65+
'dns.update',
66+
'dns.version',
67+
'dns.zone',
68+
# Network and HTTP
69+
'requests',
70+
'urllib3',
71+
'certifi',
72+
'charset_normalizer',
73+
'idna',
74+
# Websockets
6675
'websockets',
76+
'websockets.legacy',
77+
'websockets.legacy.client',
78+
'websockets.legacy.server',
79+
# Streaming
80+
'streamlink',
81+
'streamlink.plugins',
82+
'fake_useragent',
83+
# TLS Client
6784
'tls_client',
6885
'tls_client.dependencies',
69-
'fake_useragent',
70-
'streamlink',
71-
'cffi',
86+
# UI
87+
'rich',
88+
'rich.console',
89+
'rich.progress',
90+
'rich.table',
91+
# Monitoring
7292
'psutil',
93+
# Other
94+
'cffi',
95+
'engineio',
96+
'engineio.async_drivers',
97+
'engineio.async_drivers.gevent',
7398
],
7499
hookspath=[],
75100
hooksconfig={},

KickViewerBOT.spec

Lines changed: 51 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,50 +26,76 @@ except ImportError:
2626
import site
2727
site_packages = site.getsitepackages()[0]
2828

29-
# Build data list with existence checks
29+
# Build data list - only include actual data files, not Python packages
3030
datas = [
3131
('backend', '.'),
3232
]
3333

34-
# Add site-packages dependencies with existence checks
35-
dependencies = [
36-
('fake_useragent', 'fake_useragent'),
37-
('streamlink', 'streamlink'),
38-
('websockets', 'websockets'),
39-
('tls_client', 'tls_client'),
40-
('cffi', 'cffi'),
41-
('psutil', 'psutil'),
42-
]
43-
44-
for dep, target in dependencies:
45-
dep_path = os.path.join(site_packages, dep)
46-
if os.path.exists(dep_path):
47-
datas.append((dep_path, target))
48-
4934
# Add fake_useragent data files if they exist
5035
fake_useragent_data = os.path.join(site_packages, 'fake_useragent', 'data')
51-
fake_useragent_json = os.path.join(site_packages, 'fake_useragent', 'data.json')
52-
5336
if os.path.exists(fake_useragent_data):
5437
datas.append((fake_useragent_data, 'fake_useragent/data'))
55-
if os.path.exists(fake_useragent_json):
56-
datas.append((fake_useragent_json, 'fake_useragent/data.json'))
5738

5839
a = Analysis(
5940
['backend/main.py'],
6041
pathex=[],
6142
binaries=tls_client_binaries,
6243
datas=datas,
6344
hiddenimports=[
64-
'rich',
65-
'trio',
45+
# Flask and related
46+
'flask',
47+
'flask_cors',
48+
'flask_socketio',
49+
'socketio',
50+
'werkzeug',
51+
'gevent',
52+
'gevent.socket',
53+
'gevent.select',
54+
'gevent._socket3',
55+
'gevent.resolver.thread',
56+
'gevent.resolver.ares',
57+
'gevent.resolver.blocking',
58+
'gevent.event',
59+
'gevent.queue',
60+
'dns',
61+
'dns.dnssec',
62+
'dns.e164',
63+
'dns.hash',
64+
'dns.namedict',
65+
'dns.tsigkeyring',
66+
'dns.update',
67+
'dns.version',
68+
'dns.zone',
69+
# Network and HTTP
70+
'requests',
71+
'urllib3',
72+
'certifi',
73+
'charset_normalizer',
74+
'idna',
75+
# Websockets
6676
'websockets',
77+
'websockets.legacy',
78+
'websockets.legacy.client',
79+
'websockets.legacy.server',
80+
# Streaming
81+
'streamlink',
82+
'streamlink.plugins',
83+
'fake_useragent',
84+
# TLS Client
6785
'tls_client',
6886
'tls_client.dependencies',
69-
'fake_useragent',
70-
'streamlink',
71-
'cffi',
87+
# UI
88+
'rich',
89+
'rich.console',
90+
'rich.progress',
91+
'rich.table',
92+
# Monitoring
7293
'psutil',
94+
# Other
95+
'cffi',
96+
'engineio',
97+
'engineio.async_drivers',
98+
'engineio.async_drivers.gevent',
7399
],
74100
hookspath=[],
75101
hooksconfig={},

0 commit comments

Comments
 (0)