From 120ffd126398aa32680c788bf599ab953e430395 Mon Sep 17 00:00:00 2001 From: gmh4589 <40pjanyh.obezjan@gmail.com> Date: Wed, 18 Sep 2024 11:34:57 +0300 Subject: [PATCH] Fixes, game base updated - 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) --- data/icons/archives.svg | 122 +++++++++++++++++++++++++++++ data/icons/consoles.svg | 83 ++++++++++++++++++++ data/icons/engines.svg | 61 +++++++++++++++ data/icons/installers.svg | 70 +++++++++++++++++ data/icons/quick_open.svg | 160 +++++++++++++------------------------- data/icons/video.svg | 26 +++++++ dev_tools/add_to_bd.py | 49 ++++++++++++ game_base.db | Bin 3182592 -> 3182592 bytes main.py | 3 + poetry.lock | 34 +++++++- pyproject.toml | 1 + source/ui/main_ui.py | 9 +++ source/ui/setting.py | 2 +- whats_new.txt | 6 ++ whats_new_ru.txt | 6 ++ 15 files changed, 526 insertions(+), 106 deletions(-) create mode 100644 data/icons/archives.svg create mode 100644 data/icons/consoles.svg create mode 100644 data/icons/engines.svg create mode 100644 data/icons/installers.svg create mode 100644 data/icons/video.svg create mode 100644 dev_tools/add_to_bd.py 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 @@ - -image/svg+xml + + + + + + + + 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 3c14ab00d9ebd5ddee632108b99260a3fea07b59..a3a9f1278ab9d4bd257bd25815d9efac674761b6 100644 GIT binary patch delta 45063 zcmc$`349b));CekZTRb8EsK)MLfV1NJtdS6)6D=}5xD+van;~jx(r% zfEN`ZD8Y_{5(cCgw~0DBxK40I$0cqf<1)rQj;Pi*i7Du zqFYJISqsgJOmMpo9FX9XND4)mY@>V{(r73j~nOA_UCugrqEc_n%kM_ z#L`!A=`WcR&m|K>Px*t%O<@$`cdRGo8j4V?2%2H+exnF;49 zCpN&@ePS-0ttZC7dF%-q&RKt44(FkNbip~}k0v;$9$yP*@pur<-0>lBe(FI@D*w_k z>O{-5^+=HAS@4y5^n{q3Cz}RcJLp>Yc2b+1fwqCR6D4!+YUQy7ZDMjM(%g(DlE<4- zKB7p^`=f>pD3YR5o|G$jC99MzS)>ffL}u+m!^wM5l*v+tUc>p8Xv&ZQMTSB{)R1S$ zHDntsh75yXpvbgVG=zM)3#}%9ZbgFOw9p|WgjQjn&`g@nT4oITjR5i%K7$u{it8m! zw$ZCbma#=_Asc1$*jzT7wXhkii4|Dt*J6n~N$yu!BMEvL)WA9)30}GPe|EIEzy1Vc z5F2vg9%c{5y_&#$1JY@Q!i8^~B3nb5m=q=jC`jG6PRxPas_z ze0GEx$&_i8zR$seCT11iXCf>l#jMvU>Nim)`XGG}sBq%>-lGWX;Y}^u{#~DCFu|=Q z^b()~T}T&d9HJM~i<5K_y$Gxay#GEXQ#6!8&3W`ZpwQ5dIoQw*g^C~Ra}4k@dNMsZ z`OGAGk|@A;AMHzi_tM@Z_0S%%2_6tH)ME)MkmX02>#$U)UHWNOrUY-LMLMZIw1GBA zJud-S~wGjKxuIR|OF06qKVDV`}qjTZ&0 z&R{WS7)?gONJ+h#bfu>^OFN_{X_HhY6-kBtl15%Ug!}_CM3X3pnt=5f&Ku4d&KNpL z>n@Pav%640?$({tb?MINI(4UY9lF+*?%`L;WkQiqC`5%kAy@DUR?^do%=~G-gHQ0S zEkz@2WZr7DyyeRgIW5Dl@Lri``?!z;%1QD#B@+5{1N^LsDMAj zAClY_&WrIrn6hmx+=n7t2>1Vt{|rG_nK>HBibCPzY;gOg;MZ$SjnmOF%0_@lb8z@en*jcOEJo)uAa^-wTyK(}DTJ zhSS16D{z>@^42@!4kBu?*Dcq zMxvyN{!!*AP-x>j?WWe>&%PU(g_9z&UqTD8QR{HU_al>LP*8J>=v9=?6rpXvd~jOl zZljIyiYl(3e^0hqPlSa-)(LlCPjEZ@rCyExf>`KXLc|2uKOG@e_;oR!LWxHS|C{+Zz!}hX0q^23{%X_xb84QJcZ?lh1AJB|<;3m8Y*WfZ-gbQ&L=aQnY zvdoLmFrCb4ri1C{dY>07`=4{YPfmz?02+ WeHi0l+o}CYtOV0L;Q(t@Jfll7{mr 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 >jx*1Uy?T4TBGgm9|qLYN50c#dGq2cv>1< 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 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+ игр, удалены повторы игр)