Get some requests from image worker, to avoid same request twice
This commit is contained in:
parent
db7e312b1d
commit
bd0802e4be
18
.github/workflows/release.yml
vendored
18
.github/workflows/release.yml
vendored
|
@ -51,8 +51,8 @@ jobs:
|
|||
uses: svenstaro/upload-release-action@2.2.1
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: Rare.deb
|
||||
asset_name: Rare.deb
|
||||
file: Rare-${{ github.event.release.tag_name }}.deb
|
||||
asset_name: Rare-${{ github.event.release.tag_name }}.deb
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
|
||||
|
@ -90,7 +90,7 @@ jobs:
|
|||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: Rare.AppImage
|
||||
asset_name: Rare-${{github.ref}}.AppImage
|
||||
asset_name: Rare-${{ github.event.release.tag_name }}.AppImage
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
- name: Upload to GitHub
|
||||
|
@ -98,7 +98,7 @@ jobs:
|
|||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: Rare.AppImage.zsync
|
||||
asset_name: Rare-${{github.ref}}.AppImage.zsync
|
||||
asset_name: Rare-${{ github.event.release.tag_name }}.AppImage.zsync
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
|
||||
|
@ -122,13 +122,13 @@ jobs:
|
|||
run: python freeze.py bdist_msi
|
||||
|
||||
- name: Rename File
|
||||
run: mv dist/* dist/Rare.msi
|
||||
run: mv dist/*.msi dist/Rare.msi
|
||||
- name: Upload to GitHub
|
||||
uses: svenstaro/upload-release-action@2.2.1
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: dist/Rare.msi
|
||||
asset_name: Rare-${{github.ref}}.msi
|
||||
asset_name: Rare-${{ github.event.release.tag_name }}.msi
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
mac_os:
|
||||
|
@ -158,13 +158,13 @@ jobs:
|
|||
- name: create dmg
|
||||
run: |
|
||||
git clone https://github.com/create-dmg/create-dmg
|
||||
create-dmg/create-dmg Rare-${{github.ref}}.dmg dist/Rare.App --volname Rare --volicon rare/resources/images/Rare.icns
|
||||
create-dmg/create-dmg Rare.dmg dist/Rare.App --volname Rare --volicon rare/resources/images/Rare.icns
|
||||
|
||||
- name: upload to GitHub
|
||||
uses: svenstaro/upload-release-action@2.2.1
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: Rare-${{github.ref}}.dmg
|
||||
asset_name: Rare-${{github.ref}}.dmg
|
||||
file: Rare.dmg
|
||||
asset_name: Rare-${{ github.event.release.tag_name }}.dmg
|
||||
tag: ${{ github.ref }}
|
||||
overwrite: true
|
||||
|
|
|
@ -22,8 +22,6 @@ class ApiSignals(QObject):
|
|||
|
||||
|
||||
class ImageWorker(QRunnable):
|
||||
download_progress = pyqtSignal(int)
|
||||
|
||||
def __init__(self, core: LegendaryCore):
|
||||
super(ImageWorker, self).__init__()
|
||||
self.core = core
|
||||
|
@ -31,24 +29,24 @@ class ImageWorker(QRunnable):
|
|||
self.setAutoDelete(True)
|
||||
|
||||
def run(self):
|
||||
download_images(self.signal.image_progress, self.core)
|
||||
download_images(self.signal.image_progress, self.signal.result, self.core)
|
||||
self.signal.image_progress.emit(100)
|
||||
|
||||
|
||||
class ApiRequestWorker(QRunnable):
|
||||
def __init__(self, text: str, function: callable, args: tuple):
|
||||
def __init__(self, api_requests: list):
|
||||
super(ApiRequestWorker, self).__init__()
|
||||
self.function, self.args = function, args
|
||||
self.api_requests = api_requests
|
||||
self.signals = ApiSignals()
|
||||
self.text = text
|
||||
self.setAutoDelete(True)
|
||||
|
||||
def run(self) -> None:
|
||||
try:
|
||||
result = self.function(*self.args)
|
||||
except HTTPError():
|
||||
result = None
|
||||
self.signals.result.emit(result, self.text)
|
||||
for text, function, args in self.api_requests:
|
||||
try:
|
||||
result = function(*args)
|
||||
except HTTPError():
|
||||
result = None
|
||||
self.signals.result.emit(result, text)
|
||||
|
||||
|
||||
class LaunchDialog(QDialog, Ui_LaunchDialog):
|
||||
|
@ -98,20 +96,20 @@ class LaunchDialog(QDialog, Ui_LaunchDialog):
|
|||
self.image_info.setText(self.tr("Downloading Images"))
|
||||
image_worker = ImageWorker(self.core)
|
||||
image_worker.signal.image_progress.connect(self.update_image_progbar)
|
||||
image_worker.signal.result.connect(self.handle_api_worker_result)
|
||||
self.thread_pool.start(image_worker)
|
||||
|
||||
api_requests = [
|
||||
["gamelist", self.core.get_game_and_dlc_list, (True,)],
|
||||
["32bit", self.core.get_game_and_dlc_list, (True, "Win32")],
|
||||
["mac", self.core.get_game_and_dlc_list, (True, "Mac")],
|
||||
["assets", self.core.egs.get_game_assets, ()],
|
||||
["no_assets", self.core.get_non_asset_library_items, ()],
|
||||
]
|
||||
for r in api_requests:
|
||||
worker = ApiRequestWorker(*r)
|
||||
worker.signals.result.connect(self.handle_api_worker_result)
|
||||
self.thread_pool.start(worker)
|
||||
# gamelist and no_asset games are from Image worker
|
||||
worker = ApiRequestWorker(api_requests)
|
||||
worker.signals.result.connect(self.handle_api_worker_result)
|
||||
self.thread_pool.start(worker)
|
||||
|
||||
# cloud save from another worker, because it is used in cloud_save_utils too
|
||||
cloud_worker = CloudWorker()
|
||||
cloud_worker.signals.result_ready.connect(lambda x: self.handle_api_worker_result(x, "saves"))
|
||||
self.thread_pool.start(cloud_worker)
|
||||
|
@ -140,7 +138,7 @@ class LaunchDialog(QDialog, Ui_LaunchDialog):
|
|||
self.core.lgd.assets = assets
|
||||
self.api_results.assets = assets
|
||||
elif text == "no_assets":
|
||||
self.api_results.no_asset_games = result[0] if result else []
|
||||
self.api_results.no_asset_games = result if result else []
|
||||
|
||||
elif text == "saves":
|
||||
self.api_results.saves = result
|
||||
|
@ -158,7 +156,7 @@ class LaunchDialog(QDialog, Ui_LaunchDialog):
|
|||
logger.info("App starting")
|
||||
self.image_info.setText(self.tr("Starting..."))
|
||||
shared.args.offline = self.offline
|
||||
shared.api_results = self.api_results
|
||||
shared.init_api_response(self.api_results)
|
||||
self.start_app.emit()
|
||||
else:
|
||||
self.finished = True
|
||||
|
|
|
@ -8,11 +8,11 @@ import sys
|
|||
from logging import getLogger
|
||||
from typing import Tuple, List
|
||||
|
||||
import requests
|
||||
import qtawesome
|
||||
import requests
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QRunnable, QSettings, Qt
|
||||
from PyQt5.QtWidgets import QApplication, QStyleFactory, QStyle
|
||||
from PyQt5.QtGui import QPalette, QColor, QPixmap, QImage
|
||||
from PyQt5.QtWidgets import QApplication, QStyleFactory
|
||||
from requests import HTTPError
|
||||
|
||||
from legendary.models.game import Game
|
||||
|
@ -21,6 +21,7 @@ from .models import PathSpec
|
|||
# Windows
|
||||
|
||||
if platform.system() == "Windows":
|
||||
# noinspection PyUnresolvedReferences
|
||||
from win32com.client import Dispatch # pylint: disable=E0401
|
||||
|
||||
from rare import languages_path, resources_path, image_dir, shared
|
||||
|
@ -32,18 +33,20 @@ logger = getLogger("Utils")
|
|||
settings = QSettings("Rare", "Rare")
|
||||
|
||||
|
||||
def download_images(signal: pyqtSignal, core: LegendaryCore):
|
||||
def download_images(progress: pyqtSignal, results: pyqtSignal, core: LegendaryCore):
|
||||
if not os.path.isdir(image_dir):
|
||||
os.makedirs(image_dir)
|
||||
logger.info("Create Image dir")
|
||||
|
||||
# Download Images
|
||||
games, dlcs = core.get_game_and_dlc_list()
|
||||
games, dlcs = core.get_game_and_dlc_list(True)
|
||||
results.emit((games, dlcs), "gamelist")
|
||||
dlc_list = []
|
||||
for i in dlcs.values():
|
||||
dlc_list.append(i[0])
|
||||
|
||||
no_assets = core.get_non_asset_library_items()[0]
|
||||
results.emit(no_assets, "no_assets")
|
||||
|
||||
game_list = games + dlc_list + no_assets
|
||||
for i, game in enumerate(game_list):
|
||||
|
@ -52,7 +55,7 @@ def download_images(signal: pyqtSignal, core: LegendaryCore):
|
|||
except json.decoder.JSONDecodeError:
|
||||
shutil.rmtree(f"{image_dir}/{game.app_name}")
|
||||
download_image(game)
|
||||
signal.emit(i * 100 // len(game_list))
|
||||
progress.emit(i * 100 // len(game_list))
|
||||
|
||||
|
||||
def download_image(game, force=False):
|
||||
|
|
Loading…
Reference in a new issue