diff --git a/data/icons/archives.svg b/data/icons/archives.svg
new file mode 100644
index 00000000..4c76158c
--- /dev/null
+++ b/data/icons/archives.svg
@@ -0,0 +1,122 @@
+
+
diff --git a/data/icons/consoles.svg b/data/icons/consoles.svg
new file mode 100644
index 00000000..bad8c7c4
--- /dev/null
+++ b/data/icons/consoles.svg
@@ -0,0 +1,83 @@
+
+
diff --git a/data/icons/engines.svg b/data/icons/engines.svg
new file mode 100644
index 00000000..0f7a53de
--- /dev/null
+++ b/data/icons/engines.svg
@@ -0,0 +1,61 @@
+
+
diff --git a/data/icons/installers.svg b/data/icons/installers.svg
new file mode 100644
index 00000000..e3838e8b
--- /dev/null
+++ b/data/icons/installers.svg
@@ -0,0 +1,70 @@
+
+
diff --git a/data/icons/quick_open.svg b/data/icons/quick_open.svg
index c507b779..e0e4dceb 100644
--- a/data/icons/quick_open.svg
+++ b/data/icons/quick_open.svg
@@ -1,104 +1,56 @@
-
-
+
+
diff --git a/data/icons/video.svg b/data/icons/video.svg
new file mode 100644
index 00000000..9caaebf5
--- /dev/null
+++ b/data/icons/video.svg
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/dev_tools/add_to_bd.py b/dev_tools/add_to_bd.py
new file mode 100644
index 00000000..25d53ae0
--- /dev/null
+++ b/dev_tools/add_to_bd.py
@@ -0,0 +1,49 @@
+import sqlalchemy
+from sqlalchemy import Table, Column, Integer, String
+import requests
+from bs4 import BeautifulSoup
+
+
+def get_release_date(game_name):
+ game_name = (game_name.replace(' ', '_')
+ .replace(':', '')
+ .replace("'", '')
+ .replace("-", '')
+ .lower())
+
+ response = requests.get('https://www.playground.ru/' + game_name)
+
+ if response.status_code == 200:
+ soup = BeautifulSoup(response.text, 'html.parser')
+ release_date = soup.select('.release-item')[0].text.replace(' ', '').strip()
+ return release_date.split('\n')[0].split('.')[-1]
+
+
+engine = sqlalchemy.create_engine('sqlite:///game_base.db')
+conn = engine.connect()
+metadata = sqlalchemy.MetaData()
+
+game_list = Table('game_list', metadata,
+ Column('id', Integer, primary_key=True),
+ Column('game_name', String),
+ Column('release_year', String),
+ Column('func_name', String),
+ Column('ext_list', String),
+ extend_existing=True)
+
+with open('ue4_list.txt', 'r') as ue4:
+ table_data = ue4.readlines()
+
+for i, t in enumerate(table_data):
+ name, hex_value = t.strip().split(' 0x')
+ release_year = get_release_date(name.strip().split(' (')[0])
+ print(i, name, release_year)
+ ins = game_list.insert().values(game_name=name.strip(),
+ release_year=release_year,
+ func_name='_Unreal4',
+ ext_list=f'0x{hex_value}'
+ )
+ conn.execute(ins)
+
+conn.commit()
+conn.close()
diff --git a/game_base.db b/game_base.db
index 3c14ab00..a3a9f127 100644
Binary files a/game_base.db and b/game_base.db differ
diff --git a/main.py b/main.py
index 9154103a..03924417 100644
--- a/main.py
+++ b/main.py
@@ -15,6 +15,8 @@
from source.reapers import *
from source.delete import DeleteThread
+ic.disable()
+
class UnpackerMain(MainWindow, QuickOpen):
@@ -117,6 +119,7 @@ def __init__(self):
self.pb = custom_ui.ProgressBar(self.setting["Main"]["theme"])
self.last_run = None
self.file_list = [sys.argv[1], ]
+ self.func_name = None
self.find_reaper()
diff --git a/poetry.lock b/poetry.lock
index 7740e28c..1f22161b 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -40,6 +40,27 @@ six = ">=1.12.0"
astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"]
test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"]
+[[package]]
+name = "beautifulsoup4"
+version = "4.12.3"
+description = "Screen-scraping library"
+optional = false
+python-versions = ">=3.6.0"
+files = [
+ {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"},
+ {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"},
+]
+
+[package.dependencies]
+soupsieve = ">1.2"
+
+[package.extras]
+cchardet = ["cchardet"]
+chardet = ["chardet"]
+charset-normalizer = ["charset-normalizer"]
+html5lib = ["html5lib"]
+lxml = ["lxml"]
+
[[package]]
name = "certifi"
version = "2024.2.2"
@@ -943,6 +964,17 @@ files = [
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
+[[package]]
+name = "soupsieve"
+version = "2.6"
+description = "A modern CSS selector implementation for Beautiful Soup."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"},
+ {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"},
+]
+
[[package]]
name = "sqlalchemy"
version = "2.0.31"
@@ -1094,4 +1126,4 @@ files = [
[metadata]
lock-version = "2.0"
python-versions = ">=3.11,<3.13"
-content-hash = "fc1b06add9a27c3743a0a173fab2360f70ccf685fcdef424f40ad05cff7b738e"
+content-hash = "61492143f4959345622557fca430c76a3527f1a3b68062d091bf1b89ac61f8af"
diff --git a/pyproject.toml b/pyproject.toml
index bdaedbff..2fc5447b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -19,6 +19,7 @@ pyinstaller = "^6.4.0"
sqlalchemy = "^2.0.31"
pylint = "^3.2.5"
ruff = "^0.5.0"
+beautifulsoup4 = "^4.12.3"
[build-system]
diff --git a/source/ui/main_ui.py b/source/ui/main_ui.py
index 815a9428..b03371fd 100644
--- a/source/ui/main_ui.py
+++ b/source/ui/main_ui.py
@@ -352,6 +352,15 @@ def __init__(self):
self.menubar.addAction(self.menu_about.menuAction())
self.setCentralWidget(self.centralwidget)
+ # Set icons
+ # self.menu_disk_images.setIcon(QIcon('./data/icons/disk_image.svg'))
+ # self.quickOpen.setIcon(QIcon('./data/icons/quick_open.svg'))
+ # self.consolesMenu.setIcon(QIcon('./data/icons/consoles.svg'))
+ # self.menu_archives.setIcon(QIcon('./data/icons/archives.svg'))
+ # self.menu_installers.setIcon(QIcon('./data/icons/installers.svg'))
+ # self.menu_game_engines.setIcon(QIcon('./data/icons/engines.svg'))
+ # self.videoConverters.setIcon(QIcon('./data/icons/video.svg'))
+
self.all_games = 0
self.download = True
self.current_game = 0
diff --git a/source/ui/setting.py b/source/ui/setting.py
index 7bb960a6..a6df6b6d 100644
--- a/source/ui/setting.py
+++ b/source/ui/setting.py
@@ -196,7 +196,7 @@ def apply_setting(self, style):
with winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, r'*\shell\BFGUnp') as key:
winreg.SetValueEx(key, '', 0, winreg.REG_SZ, 'Open with BFG Unpacker')
- winreg.SetValueEx(key, 'Icon', 0, winreg.REG_SZ, f'{script_dir}\\data\\icons\\i.ico, 0')
+ winreg.SetValueEx(key, 'Icon', 0, winreg.REG_SZ, f'{script_dir}\\data\\icons\\i.ico, 2')
with winreg.CreateKey(winreg.HKEY_CLASSES_ROOT, r'*\shell\BFGUnp\command') as key:
winreg.SetValueEx(key, '', 0, winreg.REG_SZ, f'"{script_dir}\\bfg_unpacker.exe" "%1"')
diff --git a/whats_new.txt b/whats_new.txt
index d3809d95..0084106e 100644
--- a/whats_new.txt
+++ b/whats_new.txt
@@ -1,4 +1,10 @@
+September 18, 2024 - 2.0.0 beta_2 version release
+
+ - Fixed icon showing in explorer's context menu
+ - Fixed program crash by try unpacking file from explorer's context menu
+ - The game base was updated (updated UE4 game list, added 200+ release years)
+
September 17, 2024
- Added support to unpack archives from "Of orc and human" game
diff --git a/whats_new_ru.txt b/whats_new_ru.txt
index e186f644..2c68f512 100644
--- a/whats_new_ru.txt
+++ b/whats_new_ru.txt
@@ -1,4 +1,10 @@
+18.09.2024 - релиз версии 2.0.0 beta_2
+
+ - Исправлено отображение иконки программы в контекстном меню проводника
+ - Исправлен вылет при попытке распаковать файл из контекстного меню проводника
+ - Обновлена база игр (обновлен список игр на UE4, добавлены годы релизов 200+ игр)
+
17.09.2024
- Обновлена база игр (добавлены годы релизов 500+ игр, удалены повторы игр)