Merge branch 'main' into danish-translation

This commit is contained in:
Zamitto 2024-09-23 12:22:41 -03:00 committed by GitHub
commit 61b2d55d47
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 626 additions and 65 deletions

View File

@ -1,4 +1,5 @@
MAIN_VITE_STEAMGRIDDB_API_KEY=YOUR_API_KEY
MAIN_VITE_API_URL=API_URL MAIN_VITE_API_URL=API_URL
MAIN_VITE_AUTH_URL=AUTH_URL
MAIN_VITE_STEAMGRIDDB_API_KEY=YOUR_API_KEY
MAIN_VITE_SENTRY_DSN=YOUR_SENTRY_DSN MAIN_VITE_SENTRY_DSN=YOUR_SENTRY_DSN
SENTRY_AUTH_TOKEN= SENTRY_AUTH_TOKEN=

View File

@ -33,18 +33,11 @@ body:
attributes: attributes:
label: Additional information and data label: Additional information and data
description: | description: |
If possible, add screenshots and upload your logs file here. Add screenshots and upload your logs file here.
Logs location on Windows: "%appdata%/hydra" Logs location on Windows: "%appdata%/hydra"
Logs location on Linux: "~/.config/hydra/" Logs location on Linux: "~/.config/hydra/"
validations: validations:
required: false required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: If possible, add screenshots to help explain your problem.
validations:
required: false
- type: input - type: input
id: OS id: OS
attributes: attributes:

View File

@ -41,6 +41,7 @@ jobs:
yarn build:linux yarn build:linux
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }} MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -50,6 +51,7 @@ jobs:
run: yarn build:win run: yarn build:win
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }} MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -43,6 +43,7 @@ jobs:
yarn build:linux yarn build:linux
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }} MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -52,6 +53,7 @@ jobs:
run: yarn build:win run: yarn build:win
env: env:
MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }} MAIN_VITE_API_URL: ${{ vars.MAIN_VITE_API_URL }}
MAIN_VITE_AUTH_URL: ${{ vars.MAIN_VITE_AUTH_URL }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }} MAIN_VITE_SENTRY_DSN: ${{ vars.MAIN_VITE_SENTRY_DSN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent і самастойным scraper`ам для рэпакаў.</strong> <strong>Hydra - гэта гульнявы лаўнчар з уласным убудаваным кліентам BitTorrent.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -140,9 +141,8 @@ pip install -r requirements.txt
## Пераменныя асяроддзі ## Пераменныя асяроддзі
Вам спатрэбіцца ключ API SteamGridDB, каб атрымаць значкі гульняў пры ўсталёўкі. Вам спатрэбіцца ключ API SteamGridDB, каб атрымаць значкі гульняў пры ўсталёўкі.
Калі вы жадаеце выкарыстоўваць onlinefix у якасці рэпака, вам трэба дадаць вашыя ўліковыя дадзеныя ў файл .env.
Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Як толькі вы атрымаеце ключ, вы зможаце скапіяваць або пераназваць файл `.env.example` у `.env` і змясціць у яго `STEAMGRIDDB_API_KEY`.
## Запуск ## Запуск

View File

@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Katalog](./docs/screenshot.png) ![Hydra Katalog](./docs/screenshot.png)

View File

@ -24,6 +24,7 @@
[![de](https://img.shields.io/badge/lang-de-black)](README.de.md) [![de](https://img.shields.io/badge/lang-de-black)](README.de.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Katalog](./docs/screenshot.png) ![Hydra Katalog](./docs/screenshot.png)

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra es un launcher de juegos con su propio cliente de bittorrent y gestor propio de repacks.</strong> <strong>Hydra es un launcher de juegos con su propio cliente de bittorrent.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -56,17 +57,15 @@
## Acerca de ## Acerca de
**Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent** y **autogestor de Repacks**. **Hydra** es un **Launcher de Juegos** con su propio **Cliente Bittorrent**.
<br> <br>
El launcher está escrito en TypeScript (Electron) y Python, el cuál se encarga del sistema de torrent usando libtorrent. El launcher está escrito en TypeScript (Electron) y Python, el cuál se encarga del sistema de torrent usando libtorrent.
## Caracteristicas ## Caracteristicas
- Buscador e instalador autogestionado de repacks a través de las páginas más confiables en él [Megahilo](https://www.reddit.com/r/Piracy/wiki/megathread/)
- Cliente propio de bittorrent integrado - Cliente propio de bittorrent integrado
- Integración de How Long To Beat (HLTB) en la página del juego - Integración de How Long To Beat (HLTB) en la página del juego
- Customización de rutas de descargas - Customización de rutas de descargas
- Notificaciones en actualizaciones a listas de repacks
- Soporte a Windows y Linux - Soporte a Windows y Linux
- En constante actualización - En constante actualización
- Y mucho más ... - Y mucho más ...
@ -140,9 +139,8 @@ pip install -r requirements.txt
## Variables del Entorno ## Variables del Entorno
Necesitas una llave API de SteamGridDB para así poder obtener los íconos de los juegos en la instalación. Necesitas una llave API de SteamGridDB para así poder obtener los íconos de los juegos en la instalación.
Si quieres también tener los repacks de onlinefix, necesitarás añadir tus credenciales al .env
Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Una vez que los tengas, puedes copiar o renombrar el archivo `.env.example` cómo `.env` y colocarlo en `STEAMGRIDDB_API_KEY`.
## Ejecucion ## Ejecucion

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré et un scraper de repack auto-géré.</strong> <strong>Hydra est un lanceur de jeux avec son propre client bittorrent intégré.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Catalogue Hydra](./docs/screenshot.png) ![Catalogue Hydra](./docs/screenshot.png)
@ -56,17 +57,15 @@
## À propos ## À propos
**Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré et un **scraper de repack auto-géré**. **Hydra** est un **lanceur de jeux** avec son propre **client BitTorrent** intégré.
<br> <br>
Le lanceur est écrit en TypeScript (Electron) et Python, qui gère le système de torrent en utilisant libtorrent. Le lanceur est écrit en TypeScript (Electron) et Python, qui gère le système de torrent en utilisant libtorrent.
## Fonctionnalités ## Fonctionnalités
- Scraper de repack auto-géré parmi tous les sites les plus fiables sur le [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Client bittorrent intégré - Client bittorrent intégré
- Intégration How Long To Beat (HLTB) sur la page du jeu - Intégration How Long To Beat (HLTB) sur la page du jeu
- Personnalisation des chemins de téléchargement - Personnalisation des chemins de téléchargement
- Notifications de mise à jour de la liste de repack
- Support pour Windows et Linux - Support pour Windows et Linux
- Constamment mis à jour - Constamment mis à jour
- Et plus encore ... - Et plus encore ...
@ -140,9 +139,8 @@ pip install -r requirements.txt
## Variables d'environnement ## Variables d'environnement
Vous aurez besoin d'une clé API SteamGridDB pour récupérer les icônes de jeux lors de l'installation. Vous aurez besoin d'une clé API SteamGridDB pour récupérer les icônes de jeux lors de l'installation.
Si vous voulez avoir onlinefix comme repacker, vous devrez ajouter vos identifiants au fichier .env.
Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Une fois que vous l'avez, vous pouvez copier ou renommer le fichier `.env.example` en `.env` et y mettre `STEAMGRIDDB_API_KEY`.
## Lancement ## Lancement

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra è un game launcher con il proprio client bittorrent e autogestore di repacks.</strong> <strong>Hydra è un game launcher con il proprio client bittorrent.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -56,17 +57,15 @@
## A proposito ## A proposito
**Hydra** è un **Game Launcher** con il proprio **Client BitTorrent** e **autogestore di repack**. **Hydra** è un **Game Launcher** con il proprio **Client BitTorrent**.
<br> <br>
Il launcher è scritto in TypeScript (Electron) and Python, che gestisce il sistema di torrenting appoggiandosi a libtorrent. Il launcher è scritto in TypeScript (Electron) and Python, che gestisce il sistema di torrenting appoggiandosi a libtorrent.
## Caratteristiche ## Caratteristiche
- Motore di ricerca automatizzato sulle fonti di repack dal [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Client Bittorrent integrato - Client Bittorrent integrato
- Integrazione How Long To Beat (HLTB) nella pagina del gioco - Integrazione How Long To Beat (HLTB) nella pagina del gioco
- Percorso del download Personalizzato - Percorso del download Personalizzato
- Notifiche di aggiornamenti sulla list dei repacks
- Supporto Windows e Linux - Supporto Windows e Linux
- Costantemente Aggiornato - Costantemente Aggiornato
- E molto altro ... - E molto altro ...
@ -140,9 +139,8 @@ pip install -r requirements.txt
## Variabili d'ambiente ## Variabili d'ambiente
Avrai bisogno di una chiave API SteamGridDB per poter caricare le icone di gioco. Avrai bisogno di una chiave API SteamGridDB per poter caricare le icone di gioco.
Se intendi avere onlinefix come repacker dovrai aggiungere le tue credenziali al file .env
Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Una volta ottenuta, puoi copiare e rinominare il file `.env.example` a `.env` e metterlo in `STEAMGRIDDB_API_KEY`.
## Esecuzione ## Esecuzione

View File

@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)

187
README.nb.md Normal file
View File

@ -0,0 +1,187 @@
<br>
<div align="center">
[<img src="./resources/icon.png" width="144"/>](https://hydralauncher.site)
<h1 align="center">Hydra Launcher</h1>
<p align="center">
<strong>Hydra er en spill launcher sin egen innebygt bittorrent klient.</strong>
</p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
[![release](https://img.shields.io/github/package-json/v/hydralauncher/hydra)](https://github.com/hydralauncher/hydra/releases)
[![pt-BR](https://img.shields.io/badge/lang-pt--BR-green.svg)](README.pt-BR.md)
[![en](https://img.shields.io/badge/lang-en-red.svg)](README.md)
[![ru](https://img.shields.io/badge/lang-ru-yellow.svg)](README.ru.md)
[![uk-UA](https://img.shields.io/badge/lang-uk--UA-blue)](README.uk-UA.md)
[![be](https://img.shields.io/badge/lang-be-orange)](README.be.md)
[![es](https://img.shields.io/badge/lang-es-red)](README.es.md)
[![fr](https://img.shields.io/badge/lang-fr-blue)](README.fr.md)
[![de](https://img.shields.io/badge/lang-de-black)](README.de.md)
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png)
</div>
## Innhold
- [Innhold](#innhold)
- [Om](#om)
- [Funksjoner](#funksjoner)
- [Installasjon](#installasjon)
- [Bidra](#-bidra)
- [Bli med i Telegram kanalen vår](#-join-our-telegram)
- [Forke og klone repoet ditt](#fork-and-clone-your-repository)
- [Måter du kan bidra](#ways-you-can-contribute)
- [Prosjekt Struktur](#project-structure)
- [Bygg fra kilden](#build-from-source)
- [Installere Node.js](#install-nodejs)
- [Installere Yarn](#install-yarn)
- [Installere Node-avhengigheter](#install-node-dependencies)
- [Installere Python 3.9](#install-python-39)
- [Installere Python-avhengigheter](#install-python-dependencies)
- [Miljøvariabler](#environment-variables)
- [Kjøre](#running)
- [Bygge](#build)
- [Bygg bittorrent klienten](#build-the-bittorrent-client)
- [Bygg Electron applikationen](#build-the-electron-application)
- [Bidragsytere](#contributors)
- [Lisens](#license)
## Om
**Hydra** er en **Spill Launcher** sin egne innbygte **BitTorrent Klient**.
<br>
Launcheren er skrevet i TypeScript (Electron) og Python, som håndterer torrent systemet ved bruk av libtorrent.
## Funksjoner
- Sin egen innebyggte bittorrent klient
- How Long To Beat (HLTB) integrasjon på spillsiden
- Nedlastingssti tilpasning
- Windows og Linux understøttelse
- Konstant oppdatert
- Og mer ...
## Installasjon
Følg trinnene her under for å innstallere:
1. Last ned den seneste versjonen av Hydra fra [Releases](https://github.com/hydralauncher/hydra/releases/latest) siden.
- Last kun .exe filen ned om du vil installere Hydra på Windows.
- Last kun .deb, .rpm eller .zip ned om du vil installere Hydra på Linux. (kommer an på Linux distroen din)
2. Kjør den nedlastede filen.
3. Nyt Hydra!
## <a name="contributing"> Bidra
### <a name="join-our-telegram"></a> Bli med i Telegram kanalen vår
Vi holder diskusjonene våres i [Telegram](https://t.me/hydralauncher) kanalen.
### Forke og klone repoet ditt
1. Fork repoet [(trykk her for å forke nå)](https://github.com/hydralauncher/hydra/fork)
2. Klon den forkede koden `git clone https://github.com/brukernavnet_ditt/hydra`
3. Lag en ny branch
4. Skyv committene dine
5. Send inn en ny Pull-forespørsel.
### Måter du kan bidra
- Oversetting: Vi har lyst at Hydra skal bli tilgjengelig for så mange som mulig. Hjelp gjerne med å oversette til nye språk eller oppdater og forbedre de som allerede er tilgjengelige i Hydra.
- Code: Hydra is built with Typescript, Electron and a little bit of Python. If you want to contribute, join our [Telegram](https://t.me/hydralauncher)!
- Kode: Hydra er laget med Typescript, Electron og lite gran Pythong. Hvis du har lyst på å bidra, bli med i [Telegram](https://t.me/hydralauncher) kanalen vår!
### Prosjektstruktur
- torrent-client: Vi bruker libtorrent, et Python-bibliotek, til å håndtere torrent nedlastinger.
- src/renderer: UIen til applikasjonen
- src/main: all logikken er her.
## Bygg fra kildekoden
### Installere Node.js
Vær sikker på at du har installert Node.js på maskinen din. Hvis du ikke har det, må du laste ned og installere det fra [nodejs.org](https://nodejs.org/).
### Installere Yarn
Yarn er et pakkehåndteringsverktøy til Node.js. Hvis du ikke allerede har installert Yarn, da kan du gjøre det ved å følge instruksjonene på [yarnpkg.com](https://classic.yarnpkg.com/lang/en/docs/install/).
### Installere Node-avhengigheter
Naviger til prosjektmappen og installer Node-avhengighetene ved bruk av Yarn:
```bash
cd hydra
yarn
```
### Installere Python 3.9
Vær sikker på at du har installert Python 3.9 på maskinen din. Du kan laste ned og installere det på [python.org](https://www.python.org/downloads/release/python-3913/).
### Installere Python-avhengigheter
Installer de nødvendige Python-avhengigheter ved bruk av pip:
```bash
pip install -r requirements.txt
```
## Miljøvariabler
Du trenger en SteamGridDB API nøkkel for å kunne hente spillikonene ved installasjon.
Når du har det, kan du kopiere eller endre navnet på `.env.example` filen til å være `.env` og lagre nøkkelen som `STEAMGRIDDB_API_KEY`.
## Kjøre
Når alt er satt op, kan du kjøre følgende kommando for å start både Electron prosessen og bittorrent klienten.
```bash
yarn dev
```
## Bygge
### Bygge bittorrent klienten
Bygg bittorrent klienten ved å bruke denne kommandoen:
```bash
python torrent-client/setup.py build
```
### Bygge Electron applikasjonen
Bygg Electron applikasjonen ved å bruke denne kommandoen:
På Windows:
```bash
yarn build:win
```
På Linux:
```bash
yarn build:linux
```
## Bidragsytere
<a href="https://github.com/hydralauncher/hydra/graphs/contributors">
<img src="https://contrib.rocks/image?repo=hydralauncher/hydra" />
</a>
## Lisens
Hydra bruker [MIT Lisensen](LICENSE).

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent i samodzielnie zarządzanym repackagerem..</strong> <strong>Hydra - to program uruchamiający gry z własnym wbudowanym klientem bittorrent.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -56,17 +57,15 @@
## O nas ## O nas
**Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent** i **samozarządzającym się repackagerem**. **Hydra** - jest **programem uruchamiającym gry** z wbudowanym **klientem BitTorrent**.
<br> <br>
Ten launcher jest napisany w TypeScript (Electron) i Pythonie, który współpracuje z systemem torrent przy użyciu libtorrent. Ten launcher jest napisany w TypeScript (Electron) i Pythonie, który współpracuje z systemem torrent przy użyciu libtorrent.
## Cechy ## Cechy
- Samodzielnie zarządzany repackager wśród wszystkich najbardziej zaufanych stron na [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/").
- Własny wbudowany klient bittorrent - Własny wbudowany klient bittorrent
- Integracja funkcji How Long To Beat (HLTB) na stronie gry - Integracja funkcji How Long To Beat (HLTB) na stronie gry
- Personalizacja folderu pobierania - Personalizacja folderu pobierania
- Powiadomienia o aktualizacjach listy repacków
- Wsparcie dla systemów Windows i Linux - Wsparcie dla systemów Windows i Linux
- Stała aktualizacja - Stała aktualizacja
- I nie tylko ... - I nie tylko ...
@ -144,9 +143,8 @@ pip install -r requirements.txt
## Zmienne środowiskowe ## Zmienne środowiskowe
Będziesz potrzebował klucza API SteamGridDB, aby uzyskać ikony gier podczas instalacji. Będziesz potrzebował klucza API SteamGridDB, aby uzyskać ikony gier podczas instalacji.
Jeśli chcesz użyć onlinefix jako repackagera, musisz dodać swoje dane uwierzytelniające do .env
Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Po jego uzyskaniu można skopiować plik lub zmienić jego nazwę `.env.example` na `.env` i umieść go na`STEAMGRIDDB_API_KEY`.
## Run ## Run

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado e um wrapper autogerenciado para busca de repacks.</strong> <strong>Hydra é um Launcher de Jogos com seu próprio cliente de bittorrent integrado.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -56,17 +57,15 @@
## <a name="about"> Sobre ## <a name="about"> Sobre
**Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado** e um **raspador de repack auto-gerenciado**. **Hydra** é um **Launcher de Jogos** com seu próprio **Cliente BitTorrent incorporado**.
<br> <br>
O launcher é escrito em TypeScript (Electron) e Python, que lida com o sistema de torrent usando libtorrent. O launcher é escrito em TypeScript (Electron) e Python, que lida com o sistema de torrent usando libtorrent.
## <a name="features"> Recursos ## <a name="features"> Recursos
- Wrapper de repacks auto-gerenciado entre todos os sites mais confiáveis no [Megathread]("https://www.reddit.com/r/Piracy/wiki/megathread/")
- Cliente BitTorrent incorporado próprio - Cliente BitTorrent incorporado próprio
- Integração com [How Long To Beat (HLTB)](https://howlongtobeat.com/) na página do jogo - Integração com [How Long To Beat (HLTB)](https://howlongtobeat.com/) na página do jogo
- Personalização do caminho de downloads - Personalização do caminho de downloads
- Notificações de atualização da lista de repacks
- Suporte para Windows e Linux - Suporte para Windows e Linux
- Constantemente atualizado - Constantemente atualizado
- E mais ... - E mais ...
@ -137,14 +136,13 @@ Instale as dependências Python necessárias usando o pip:
pip install -r requirements.txt pip install -r requirements.txt
``` ```
## <a name="environment-variables"></a> Environment variables ## <a name="environment-variables"></a> Variáveis de ambiente
Você precisará de uma chave da API SteamGridDB para buscar os ícones do jogo durante a instalação. Você precisará de uma chave da API SteamGridDB para buscar os ícones do jogo durante a instalação.
Se você deseja ter o onlinefix como um repacker, precisará adicionar suas credenciais ao arquivo .env.
Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME` e `ONLINEFIX_PASSWORD`. Depois de obtê-lo, você pode copiar ou renomear o arquivo `.env.example` para `.env` e inserir `STEAMGRIDDB_API_KEY`.
## <a name="running"></a> Running ## <a name="running"></a> Executando
Uma vez que você tenha configurado tudo, você pode executar o seguinte comando para iniciar tanto o processo Electron quanto o cliente BitTorrent: Uma vez que você tenha configurado tudo, você pode executar o seguinte comando para iniciar tanto o processo Electron quanto o cliente BitTorrent:

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent и самостоятельным scraper`ом для репаков.</strong> <strong>Hydra - это игровой лаунчер с собственным встроенным клиентом BitTorrent.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -140,9 +141,8 @@ pip install -r requirements.txt
## Переменные среды ## Переменные среды
Вам понадобится ключ API SteamGridDB, чтобы получить значки игр при установке. Вам понадобится ключ API SteamGridDB, чтобы получить значки игр при установке.
Если вы хотите использовать onlinefix в качестве репака, вам нужно добавить ваши учетные данные в файл .env.
Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Как только у вас будет ключ, вы можете скопировать или переименовать файл `.env.example` в `.env` и поместить в него `STEAMGRIDDB_API_KEY`.
## Запуск ## Запуск

View File

@ -7,7 +7,7 @@
<h1 align="center">Hydra Launcher</h1> <h1 align="center">Hydra Launcher</h1>
<p align="center"> <p align="center">
<strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом і самокерованим збирачем репаків.</strong> <strong>Hydra - це ігровий лаунчер з власним вбудованим bittorrent-клієнтом.</strong>
</p> </p>
[![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions) [![build](https://img.shields.io/github/actions/workflow/status/hydralauncher/hydra/build.yml)](https://github.com/hydralauncher/hydra/actions)
@ -24,6 +24,7 @@
[![ita](https://img.shields.io/badge/lang-it-red)](README.it.md) [![ita](https://img.shields.io/badge/lang-it-red)](README.it.md)
[![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md) [![cs](https://img.shields.io/badge/lang-cs-purple)](README.cs.md)
[![da](https://img.shields.io/badge/lang-da-red)](README.da.md) [![da](https://img.shields.io/badge/lang-da-red)](README.da.md)
[![nb](https://img.shields.io/badge/lang-nb-blue)](README.nb.md)
![Hydra Catalogue](./docs/screenshot.png) ![Hydra Catalogue](./docs/screenshot.png)
@ -144,9 +145,8 @@ pip install -r requirements.txt
## Змінні середовища ## Змінні середовища
Вам знадобиться ключ API SteamGridDB, щоб отримати іконки ігор під час встановлення. Вам знадобиться ключ API SteamGridDB, щоб отримати іконки ігор під час встановлення.
Якщо ви хочете використовувати onlinefix як перепакувальник, вам потрібно додати свої облікові дані до .env
Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`, `ONLINEFIX_USERNAME`, `ONLINEFIX_PASSWORD`. Отримавши його, ви можете скопіювати або перейменувати файл `.env.example` на `.env`і помістити його на`STEAMGRIDDB_API_KEY`.
## Запустіть ## Запустіть

7
build/installer.nsh Normal file
View File

@ -0,0 +1,7 @@
!macro customUnInstall
${ifNot} ${isUpdated}
RMDir /r "$APPDATA\${APP_PACKAGE_NAME}"
RMDir /r "$APPDATA\hydra"
RMDir /r "$LOCALAPPDATA\hydralauncher-updater"
${endIf}
!macroend

View File

@ -27,6 +27,7 @@ nsis:
createDesktopShortcut: always createDesktopShortcut: always
oneClick: false oneClick: false
allowToChangeInstallationDirectory: true allowToChangeInstallationDirectory: true
include: installer.nsh
portable: portable:
artifactName: ${name}-${version}-portable.${ext} artifactName: ${name}-${version}-portable.${ext}
mac: mac:

View File

@ -1,6 +1,6 @@
{ {
"name": "hydralauncher", "name": "hydralauncher",
"version": "2.1.4", "version": "2.1.7",
"description": "Hydra", "description": "Hydra",
"main": "./out/main/index.js", "main": "./out/main/index.js",
"author": "Los Broxas", "author": "Los Broxas",

View File

@ -311,6 +311,7 @@
"report_reason_violence": "Violence", "report_reason_violence": "Violence",
"report_reason_spam": "Spam", "report_reason_spam": "Spam",
"report_reason_other": "Other", "report_reason_other": "Other",
"profile_reported": "Profile reported" "profile_reported": "Profile reported",
"your_friend_code": "Your friend code:"
} }
} }

View File

@ -22,6 +22,7 @@ import ro from "./ro/translation.json";
import ca from "./ca/translation.json"; import ca from "./ca/translation.json";
import kk from "./kk/translation.json"; import kk from "./kk/translation.json";
import cs from "./cs/translation.json"; import cs from "./cs/translation.json";
import nb from "./nb/translation.json";
export default { export default {
"pt-BR": ptBR, "pt-BR": ptBR,
@ -48,4 +49,5 @@ export default {
ca, ca,
kk, kk,
cs, cs,
nb,
}; };

View File

@ -0,0 +1,316 @@
{
"language_name": "Norsk Bokmål",
"app": {
"successfully_signed_in": "Logget inn vellykket"
},
"home": {
"featured": "Anbefalinger",
"trending": "Trender",
"surprise_me": "Overrask meg",
"no_results": "Ingen resultater fundet",
"start_typing": "Begynn å skrive for å søke...",
"hot": "Populært akkurat nå",
"weekly": "📅 De mest populære spillene denne uken"
},
"sidebar": {
"catalogue": "Katalog",
"downloads": "Nedlastinger",
"settings": "Innstillinger",
"my_library": "Mitt bibliotek",
"downloading_metadata": "{{title}} (Laster ned metadata…)",
"paused": "{{title}} (Satt på pause)",
"downloading": "{{title}} ({{percentage}} - Laster ned…)",
"filter": "Filtrér bibliotek",
"home": "Hjem",
"queued": "{{title}} (I køen)",
"game_has_no_executable": "Spillet har ikke noen kjørbar fil valgt",
"sign_in": "Logge inn",
"friends": "Venner"
},
"header": {
"search": "Søk efter spill",
"home": "Hjem",
"catalogue": "Katalog",
"downloads": "Nedlastinger",
"search_results": "Søkeresultater",
"settings": "Innstillinger",
"version_available_install": "Versjon {{version}} tilgjengelig. Klikk her for å gjenstarte og installere.",
"version_available_download": "Versjon {{version}} tilgjengelig. Klikk her for at laste ned."
},
"bottom_panel": {
"no_downloads_in_progress": "Ingen nedlastinger pågår",
"downloading_metadata": "Laster ned {{title}} metadata…",
"downloading": "Laster ned {{title}}… ({{percentage}} ferdig) - Fullstendig nedlastet {{eta}} - {{speed}}",
"calculating_eta": "Laster ned {{title}}… ({{percentage}} ferdig) - Regner ut resterende tid…",
"checking_files": "Sjekker {{title}} filer… ({{percentage}} ferdig)"
},
"catalogue": {
"next_page": "Neste side",
"previous_page": "Forrige side"
},
"game_details": {
"open_download_options": "Åpne nedlastingsmuligheter",
"download_options_zero": "Ingen nedlastingsmulighet",
"download_options_one": "{{count}} nedlastingsmulighet",
"download_options_other": "{{count}} nedlastingsmuligheter",
"updated_at": "Oppdatert {{updated_at}}",
"install": "Installere",
"resume": "Fortsett",
"pause": "Pause",
"cancel": "Kansellere",
"remove": "Fjern",
"space_left_on_disk": "{{space}} tilbake på harddisken",
"eta": "Konklusjon {{eta}}",
"calculating_eta": "Utregner resterende tid…",
"downloading_metadata": "Laster ned metadata…",
"filter": "Filtrér gjennpakkinger",
"requirements": "Systemkrav",
"minimum": "Mindste",
"recommended": "Anbefalet",
"paused": "Satt på pause",
"release_date": "Offentliggjort den {{date}}",
"publisher": "Gitt ut av {{publisher}}",
"hours": "timer",
"minutes": "minutter",
"amount_hours": "{{amount}} timer",
"amount_minutes": "{{amount}} minutter",
"accuracy": "{{accuracy}}% nøyaktighet",
"add_to_library": "Tilføy til biblioteket",
"remove_from_library": "Fjern fra biblioteket",
"no_downloads": "Ingen nedlastinger tilgjengelig",
"play_time": "Spilt i {{amount}}",
"last_time_played": "Sist spilt {{period}}",
"not_played_yet": "Du har ikke spilt {{title}} enda",
"next_suggestion": "Neste forslag",
"play": "Spil",
"deleting": "Sletter installatør…",
"close": "Lukk",
"playing_now": "Spiller nå",
"change": "Endre",
"repacks_modal_description": "Velg den gjennpakking du vil laste ned",
"select_folder_hint": "For å endre standard mappen, gå til <0>Innstillingene</0>",
"download_now": "Last ned nå",
"no_shop_details": "Kunne ikke modta butikksdetaljene.",
"download_options": "Nedlastingsmuligheter",
"download_path": "Nedlastingssti",
"previous_screenshot": "Forrige skjermbilde",
"next_screenshot": "Neste skjermbilde",
"screenshot": "Skjermbilde {{number}}",
"open_screenshot": "Åpen skjermbilde {{number}}",
"download_settings": "Nedlastingsinnstillinger",
"downloader": "Laster ned",
"select_executable": "Velg",
"no_executable_selected": "Ingen kjørbar fil valgt",
"open_folder": "Åpne mappe",
"open_download_location": "Se nedlastingede filer",
"create_shortcut": "Opprett snarvei på skrivebordet",
"remove_files": "Fjern filer",
"remove_from_library_title": "Er du sikker?",
"remove_from_library_description": "Dette vil fjerne {{game}} fra biblioteket ditt",
"options": "Valgmuligheter",
"executable_section_title": "Kjørbar fil",
"executable_section_description": "Sti til filen som skal brukes når det trykkes på \"Spill\"",
"downloads_secion_title": "Nedlastinger",
"downloads_section_description": "Sjekk for oppdateringer eller andre versjoner af dette spillet",
"danger_zone_section_title": "Faresonen",
"danger_zone_section_description": "Fjern dette spillet fra biblioteket ditt eller filene som har blitt lastet ned av Hydra",
"download_in_progress": "Nedlasting pågår",
"download_paused": "Nedlasting satt på pause",
"last_downloaded_option": "Siste nedlastingsmulighet",
"create_shortcut_success": "Opprettelse av snarvei vellykket",
"create_shortcut_error": "Feil under oprettelsen av snarvei",
"nsfw_content_title": "Dette spillet inneholder upassende innhold",
"nsfw_content_description": "{{title}} inneholder innhold som ikke passer til alle aldre. Er du sikker på at du vil fortsette?",
"allow_nsfw_content": "Fortsett",
"refuse_nsfw_content": "Gå tilbake",
"stats": "Statistikk",
"download_count": "Nedlastinger",
"player_count": "Aktive spillere",
"download_error": "Denne nedlastingsmulighet er ikke tilgjengelig",
"download": "Last ned",
"executable_path_in_use": "Kjørbar fil blir allerede brukt av \"{{game}}\"",
"warning": "Advarsel:",
"hydra_needs_to_remain_open": "Hydra skal forbli åpent for at denne nedlastingen kan gjennomføres. I tilfelle av at Hydra lukker før nedlastingen er ferdig, mister du fremskrittet ditt."
},
"activation": {
"title": "Aktivér Hydra",
"installation_id": "Installasjons ID:",
"enter_activation_code": "Inntast aktiveringskoden din",
"message": "Hvis du ikke vet hvor du skal spørre om dette, burde du ikke ha dette.",
"activate": "Aktivér",
"loading": "Innleser…"
},
"downloads": {
"resume": "Fortsett",
"pause": "Pause",
"eta": "Konklusjon {{eta}}",
"paused": "Satt på pause",
"verifying": "Verifiserer…",
"completed": "Ferdig",
"removed": "Ikke lastet ned",
"cancel": "Kansellér",
"filter": "Filtrér nedlastede spill",
"remove": "Fjern",
"downloading_metadata": "Laster ned metadata…",
"deleting": "Sletter installatør…",
"delete": "Fjern installatør",
"delete_modal_title": "Er du sikker?",
"delete_modal_description": "Dette vil fjerne alle installasjonsfilene fra datamaskinen din",
"install": "Installér",
"download_in_progress": "Pågår",
"queued_downloads": "Nedlastingskø",
"downloads_completed": "Gjennomførte",
"queued": "I kø",
"no_downloads_title": "Ganske tomt",
"no_downloads_description": "Du har ikke lastet ned noe med Hydra enda, men det er aldri for sent å begynne.",
"checking_files": "Undersøker filer…"
},
"settings": {
"downloads_path": "Nedlastingssti",
"change": "Oppdater",
"notifications": "Notifikasjoner",
"enable_download_notifications": "Når en nedlasting blir ferdig",
"enable_repack_list_notifications": "Når en ny gjennpakking bliver lagt til",
"real_debrid_api_token_label": "Real-Debrid API nøkkel",
"quit_app_instead_hiding": "Avslut Hydra i stedet for å minimere til prosesslinjen",
"launch_with_system": "Åpne Hydra ved oppstart av datamaskinen",
"general": "Generelt",
"behavior": "Oppførsel",
"download_sources": "Nedlastingskilder",
"language": "Språk",
"real_debrid_api_token": "API nøkkel",
"enable_real_debrid": "Slå på Real-Debrid",
"real_debrid_description": "Real-Debrid er en ubegrenset nedlaster som gør det mulig for deg å laste ned filer med en gang og med den beste utnyttelsen av internethastigheten din.",
"real_debrid_invalid_token": "Ugyldig API nøkkel",
"real_debrid_api_token_hint": "Du kan få API nøkkelen din <0>her</0>",
"real_debrid_free_account_error": "Brukeren \"{{username}}\" er en gratis bruker. Vennligst abboner på Real-Debrid",
"real_debrid_linked_message": "Brukeren \"{{username}}\" er forbunnet",
"save_changes": "Lagre endringer",
"changes_saved": "Lagring av endringer vellykket",
"download_sources_description": "Hydra vil hente nedlastingslenker fra disse kildene. Kilde URLen skal være en direkte lenke til en .json fil som inneholder nedlastingslenkene.",
"validate_download_source": "Validér",
"remove_download_source": "Fjern",
"add_download_source": "Legg til kilde",
"download_count_zero": "Ingen nedlastingsmuligheter",
"download_count_one": "{{countFormatted}} nedlastingsmulighet",
"download_count_other": "{{countFormatted}} nedlastingsmuligheter",
"download_source_url": "Last ned kilde URL",
"add_download_source_description": "Sett inn URLen som inneholder .json filen",
"download_source_up_to_date": "Oppdatert",
"download_source_errored": "Mislyktes",
"sync_download_sources": "Synkroniser kilder",
"removed_download_source": "Nedlastingskilde fjernet",
"added_download_source": "La til Nedlastingskilde",
"download_sources_synced": "Alle nedlastingskilder er synkroniserte",
"insert_valid_json_url": "Innsett en gyldig JSON url",
"found_download_option_zero": "Ingen nedlastingsmulighet funnet",
"found_download_option_one": "Fant {{countFormatted}} nedlastingsmulighet",
"found_download_option_other": "Fant {{countFormatted}} nedlastingsmuligheter",
"import": "Importer",
"public": "Offentlig",
"private": "Privat",
"friends_only": "Kun blant venner",
"privacy": "Privatliv",
"profile_visibility": "Synlighet av profil",
"profile_visibility_description": "Velg hvem som kan se profilen din og biblioteket ditt",
"required_field": "Dette feltet er påkrevet",
"source_already_exists": "Denne kilden har allerede blitt lagt til",
"must_be_valid_url": "Kilden må være en gyldig URL",
"blocked_users": "Blokerte brukere",
"user_unblocked": "Brukeren har blit avblokert"
},
"notifications": {
"download_complete": "Nedlasting ferdig",
"game_ready_to_install": "{{title}} er klar til å bli installert",
"repack_list_updated": "Gjennpakkingslisten er opdateret",
"repack_count_one": "{{count}} gjennpakking lagt til",
"repack_count_other": "{{count}} gjennpakkinger lagt til",
"new_update_available": "Versjon {{version}} tilgjengelig",
"restart_to_install_update": "Gjenstart Hydra for å installere oppdateringen"
},
"system_tray": {
"open": "Åpne Hydra",
"quit": "Avslutt"
},
"game_card": {
"no_downloads": "Ingen nedlastinger tilgjengelig"
},
"binary_not_found_modal": {
"title": "Programmer ikke installert",
"description": "Wine eller Lutris kjørbar ble ikke funnet på systemet ditt",
"instructions": "Sjekk den korrekte måten å installere noen av de, på Linux distributionen din, så spillet kan kjøre på vanlig måte"
},
"modal": {
"close": "Lukk knapp"
},
"forms": {
"toggle_password_visibility": "Skift synlighet af passord"
},
"user_profile": {
"amount_hours": "{{amount}} timer",
"amount_minutes": "{{amount}} minutter",
"last_time_played": "Sist spilt {{period}}",
"activity": "Seneste aktivitet",
"library": "Bibliotek",
"total_play_time": "Samlet spilltid: {{amount}}",
"no_recent_activity_title": "Hmmm… ikke noe her",
"no_recent_activity_description": "Du har ikke spilt noen spill for på det seneste. Det er det på tide at endre på!",
"display_name": "Brukernavn",
"saving": "Lagrer",
"save": "Lagre",
"edit_profile": "Rediger Profil",
"saved_successfully": "Lagring vellykket",
"try_again": "Vennligst, prøv igjen",
"sign_out_modal_title": "Er du sikker?",
"cancel": "Kansellér",
"successfully_signed_out": "Utlogging vellykket",
"sign_out": "Log ut",
"playing_for": "Spiller i {{amount}}",
"sign_out_modal_text": "Biblioteket ditt er sammenkobelt med den nåverende brukeren. Når du logger ut er biblioteket ditt ikke synlig lenger, og hvilken som helst form for fremskritt bliver ikke lagret. Vil du fortsette med å logge ut?",
"add_friends": "Legg til venner",
"add": "Legg til",
"friend_code": "Vennekode",
"see_profile": "Se profil",
"sending": "Sender",
"friend_request_sent": "Venneforespørsel sendt",
"friends": "Venner",
"friends_list": "Venneliste",
"user_not_found": "Bruker ikke funnet",
"block_user": "Blokkere bruker",
"add_friend": "Legg til venn",
"request_sent": "Forespørsel sendt",
"request_received": "Forespørsel modtatt",
"accept_request": "Akseptere forespørsel",
"ignore_request": "Ignorere forespørsel",
"cancel_request": "Kansellre forespørsel",
"undo_friendship": "Angre venskab",
"request_accepted": "Forespørsel akseptert",
"user_blocked_successfully": "Blokkering av bruker vellykket",
"user_block_modal_text": "Dette blokerer {{displayName}}",
"blocked_users": "Blokerte brukere",
"unblock": "Avblokere",
"no_friends_added": "Du har fortsatt ikke lagt til noen venner",
"pending": "Avventer",
"no_pending_invites": "Du har ingen avventende invitasjoner",
"no_blocked_users": "Du har ingen blokerte brukere",
"friend_code_copied": "Vennekode kopiert",
"undo_friendship_modal_text": "Dette vil angre venskapet ditt med {{displayName}}",
"privacy_hint": "For å justere på hvem som kan se dette, gå til <0>Innstillingene</0>",
"locked_profile": "Denne profilen er privat",
"image_process_failure": "Mislyktes under håndteringen av bildet",
"required_field": "Dette feltet er påkrevet",
"displayname_min_length": "Brukernavnet skal være minst 3 karakterer langt",
"displayname_max_length": "Brukernavnet skal være maksimalt 50 karakterer langt",
"report_profile": "Rapportér denne profilen",
"report_reason": "Hvorfor rapportérer du denne profilen?",
"report_description": "Mer informasjon",
"report_description_placeholder": "Mer informasjon",
"report": "Rapportér",
"report_reason_hate": "Hatytringer",
"report_reason_sexual_content": "Seksuelt innhold",
"report_reason_violence": "Vold",
"report_reason_spam": "Spam",
"report_reason_other": "Annet",
"profile_reported": "Profil rapportert"
}
}

View File

@ -315,6 +315,7 @@
"report_reason_violence": "Violência", "report_reason_violence": "Violência",
"report_reason_spam": "Spam", "report_reason_spam": "Spam",
"report_reason_other": "Outro", "report_reason_other": "Outro",
"profile_reported": "Perfil reportado" "profile_reported": "Perfil reportado",
"your_friend_code": "Seu código de amigo:"
} }
} }

View File

@ -275,6 +275,7 @@
"no_pending_invites": "Não tens convites de amizade pendentes", "no_pending_invites": "Não tens convites de amizade pendentes",
"no_blocked_users": "Não tens nenhum utilizador bloqueado", "no_blocked_users": "Não tens nenhum utilizador bloqueado",
"friend_code_copied": "Código de amigo copiado", "friend_code_copied": "Código de amigo copiado",
"image_process_failure": "Falha ao processar a imagem" "image_process_failure": "Falha ao processar a imagem",
"your_friend_code": "Seu código de amigo:"
} }
} }

View File

@ -11,3 +11,5 @@ export const logsPath = path.join(app.getPath("appData"), "hydra", "logs");
export const seedsPath = app.isPackaged export const seedsPath = app.isPackaged
? path.join(process.resourcesPath, "seeds") ? path.join(process.resourcesPath, "seeds")
: path.join(__dirname, "..", "..", "seeds"); : path.join(__dirname, "..", "..", "seeds");
export const appVersion = app.getVersion();

View File

@ -1,5 +1,5 @@
import { defaultDownloadsPath } from "@main/constants"; import { appVersion, defaultDownloadsPath } from "@main/constants";
import { app, ipcMain } from "electron"; import { ipcMain } from "electron";
import "./catalogue/get-catalogue"; import "./catalogue/get-catalogue";
import "./catalogue/get-game-shop-details"; import "./catalogue/get-game-shop-details";
@ -63,6 +63,6 @@ import "./profile/sync-friend-requests";
import { isPortableVersion } from "@main/helpers"; import { isPortableVersion } from "@main/helpers";
ipcMain.handle("ping", () => "pong"); ipcMain.handle("ping", () => "pong");
ipcMain.handle("getVersion", () => app.getVersion()); ipcMain.handle("getVersion", () => appVersion);
ipcMain.handle("isPortableVersion", () => isPortableVersion()); ipcMain.handle("isPortableVersion", () => isPortableVersion());
ipcMain.handle("getDefaultDownloadsPath", () => defaultDownloadsPath); ipcMain.handle("getDefaultDownloadsPath", () => defaultDownloadsPath);

View File

@ -5,6 +5,7 @@ import { RepackUris } from "./migrations/20240830143906_RepackUris";
import { UpdateUserLanguage } from "./migrations/20240913213944_update_user_language"; import { UpdateUserLanguage } from "./migrations/20240913213944_update_user_language";
import { EnsureRepackUris } from "./migrations/20240915035339_ensure_repack_uris"; import { EnsureRepackUris } from "./migrations/20240915035339_ensure_repack_uris";
import { app } from "electron"; import { app } from "electron";
import { FixMissingColumns } from "./migrations/20240918001920_FixMissingColumns";
export type HydraMigration = Knex.Migration & { name: string }; export type HydraMigration = Knex.Migration & { name: string };
@ -15,6 +16,7 @@ class MigrationSource implements Knex.MigrationSource<HydraMigration> {
RepackUris, RepackUris,
UpdateUserLanguage, UpdateUserLanguage,
EnsureRepackUris, EnsureRepackUris,
FixMissingColumns,
]); ]);
} }
getMigrationName(migration: HydraMigration): string { getMigrationName(migration: HydraMigration): string {

View File

@ -0,0 +1,41 @@
import type { HydraMigration } from "@main/knex-client";
import type { Knex } from "knex";
export const FixMissingColumns: HydraMigration = {
name: "FixMissingColumns",
up: async (knex: Knex) => {
const timestamp = new Date().getTime();
await knex.schema
.hasColumn("repack", "downloadSourceId")
.then(async (exists) => {
if (!exists) {
await knex.schema.table("repack", (table) => {
table
.integer("downloadSourceId")
.references("download_source.id")
.onDelete("CASCADE");
});
}
});
await knex.schema.hasColumn("game", "remoteId").then(async (exists) => {
if (!exists) {
await knex.schema.table("game", (table) => {
table
.text("remoteId")
.unique({ indexName: "game_remoteId_unique_" + timestamp });
});
}
});
await knex.schema.hasColumn("game", "uri").then(async (exists) => {
if (!exists) {
await knex.schema.table("game", (table) => {
table.text("uri");
});
}
});
},
down: async (_knex: Knex) => {},
};

View File

@ -7,6 +7,7 @@ import { clearGamesRemoteIds } from "./library-sync/clear-games-remote-id";
import { logger } from "./logger"; import { logger } from "./logger";
import { UserNotLoggedInError } from "@shared"; import { UserNotLoggedInError } from "@shared";
import { omit } from "lodash-es"; import { omit } from "lodash-es";
import { appVersion } from "@main/constants";
interface HydraApiOptions { interface HydraApiOptions {
needsAuth: boolean; needsAuth: boolean;
@ -50,7 +51,10 @@ export class HydraApi {
expirationTimestamp: tokenExpirationTimestamp, expirationTimestamp: tokenExpirationTimestamp,
}; };
logger.log("Sign in received", this.userAuth); logger.log(
"Sign in received. Token expiration timestamp:",
tokenExpirationTimestamp
);
await userAuthRepository.upsert( await userAuthRepository.upsert(
{ {
@ -80,12 +84,16 @@ export class HydraApi {
static async setupApi() { static async setupApi() {
this.instance = axios.create({ this.instance = axios.create({
baseURL: import.meta.env.MAIN_VITE_API_URL, baseURL: import.meta.env.MAIN_VITE_API_URL,
headers: { "User-Agent": `Hydra Launcher v${appVersion}` },
}); });
this.instance.interceptors.request.use( this.instance.interceptors.request.use(
(request) => { (request) => {
logger.log(" ---- REQUEST -----"); logger.log(" ---- REQUEST -----");
logger.log(request.method, request.url, request.params, request.data); const data = Array.isArray(request.data)
? request.data
: omit(request.data, ["refreshToken"]);
logger.log(request.method, request.url, request.params, data);
return request; return request;
}, },
(error) => { (error) => {

View File

@ -106,7 +106,7 @@ export class WindowManager {
}); });
authWindow.loadURL( authWindow.loadURL(
`https://auth.hydralauncher.gg/?${searchParams.toString()}` `${import.meta.env.MAIN_VITE_AUTH_URL}/?${searchParams.toString()}`
); );
authWindow.once("ready-to-show", () => { authWindow.once("ready-to-show", () => {

View File

@ -3,6 +3,7 @@
interface ImportMetaEnv { interface ImportMetaEnv {
readonly MAIN_VITE_STEAMGRIDDB_API_KEY: string; readonly MAIN_VITE_STEAMGRIDDB_API_KEY: string;
readonly MAIN_VITE_API_URL: string; readonly MAIN_VITE_API_URL: string;
readonly MAIN_VITE_AUTH_URL: string;
readonly MAIN_VITE_SENTRY_DSN: string; readonly MAIN_VITE_SENTRY_DSN: string;
} }

View File

@ -6,7 +6,7 @@
<title>Hydra</title> <title>Hydra</title>
<meta <meta
http-equiv="Content-Security-Policy" http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: local: https://*.cloudfront.net https://*.s3.amazonaws.com https://steamcdn-a.akamaihd.net https://shared.akamai.steamstatic.com https://cdn.cloudflare.steamstatic.com https://cdn2.steamgriddb.com https://cdn.akamai.steamstatic.com; media-src 'self' local: data: https://steamcdn-a.akamaihd.net https://cdn.cloudflare.steamstatic.com https://cdn2.steamgriddb.com https://cdn.akamai.steamstatic.com https://shared.akamai.steamstatic.com https://video.akamai.steamstatic.com;" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: local: *; media-src 'self' local: data: *;"
/> />
</head> </head>
<body style="background-color: #1c1c1c"> <body style="background-color: #1c1c1c">

View File

@ -19,6 +19,7 @@ export const gallerySliderMedia = style({
flexGrow: "0", flexGrow: "0",
transition: "translate 0.3s ease-in-out", transition: "translate 0.3s ease-in-out",
borderRadius: "4px", borderRadius: "4px",
alignSelf: "center",
}); });
export const gallerySliderAnimationContainer = style({ export const gallerySliderAnimationContainer = style({
@ -60,7 +61,6 @@ export const mediaPreviewButton = recipe({
base: { base: {
cursor: "pointer", cursor: "pointer",
width: "20%", width: "20%",
height: "20%",
display: "block", display: "block",
flexShrink: "0", flexShrink: "0",
flexGrow: "0", flexGrow: "0",
@ -84,7 +84,6 @@ export const mediaPreviewButton = recipe({
export const mediaPreview = style({ export const mediaPreview = style({
width: "100%", width: "100%",
height: "100%",
display: "flex", display: "flex",
}); });

View File

@ -128,6 +128,7 @@ export function GallerySlider() {
src={image.path_full} src={image.path_full}
style={{ translate: `${-100 * mediaIndex}%` }} style={{ translate: `${-100 * mediaIndex}%` }}
alt={t("screenshot", { number: i + 1 })} alt={t("screenshot", { number: i + 1 })}
loading="lazy"
/> />
))} ))}

View File

@ -81,7 +81,7 @@ export const UserFriendModal = ({
alignItems: "center", alignItems: "center",
}} }}
> >
<p>Seu código de amigo: </p> <p>{t("your_friend_code")}</p>
<button <button
className={styles.friendCodeButton} className={styles.friendCodeButton}
onClick={copyToClipboard} onClick={copyToClipboard}