mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-17 08:15:44 +00:00
[GH-61] Fix manual mapping leading to duplicates in DB
This commit is contained in:
@@ -4,8 +4,6 @@
|
|||||||
<p align="center">A simple game library manager.</p>
|
<p align="center">A simple game library manager.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<img />
|
|
||||||
|
|
||||||
# Overview
|
# Overview
|
||||||
|
|
||||||
Name and functionality inspired by [Jellyfin](https://jellyfin.org/).
|
Name and functionality inspired by [Jellyfin](https://jellyfin.org/).
|
||||||
@@ -16,15 +14,17 @@ Click [this link](https://youtu.be/BSaccEm0tpo) to watch how to install and set
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* Automatically scans your game library folder
|
* Automatically scans your game library folder and downloads additional metadata from IGDB
|
||||||
* Load additional information about the games from IGDB
|
* Access your library via your Web-Browser
|
||||||
* Display your library in a modern web frontend
|
|
||||||
* Download games directly from your browser
|
* Download games directly from your browser
|
||||||
* Search and filter your game library
|
* LAN-friendly (everything is cached locally)
|
||||||
* Offline-friendly (once the library has been scanned everything is cached locally)
|
* Native Docker support (alternatively it's only one .jar file to run on bare metal)
|
||||||
* Easy to host yourself thanks to native Docker support (alternatively it's only one .jar file to run on bare metal)
|
|
||||||
* Light and dark theme
|
* Light and dark theme
|
||||||
|
|
||||||
|
## Preview
|
||||||
|
|
||||||
|
https://user-images.githubusercontent.com/9295182/197277953-d69464a4-d280-407b-9274-ae62e6917981.mp4
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### General
|
### General
|
||||||
@@ -44,21 +44,3 @@ Since Gameyfin loads information from IGDB, you need to register yourself there.
|
|||||||
3. Edit the config options in the `gameyfin.properties` file
|
3. Edit the config options in the `gameyfin.properties` file
|
||||||
4. Use the following command to start Gameyfin: `java -jar gameyfin.jar`
|
4. Use the following command to start Gameyfin: `java -jar gameyfin.jar`
|
||||||
5. Open the address of your Gameyfin host in your browser, Gameyfin runs under port 8080 by default
|
5. Open the address of your Gameyfin host in your browser, Gameyfin runs under port 8080 by default
|
||||||
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||
### Game library screen in light mode (top) and dark mode (bottom)
|
|
||||||

|
|
||||||
|
|
||||||
### Game detail view
|
|
||||||

|
|
||||||
|
|
||||||
### Automatic library scanning
|
|
||||||

|
|
||||||
|
|
||||||
### Admin interface
|
|
||||||

|
|
||||||
|
|
||||||
### Manually fix incorrect mappings (with autocomplete suggestions)
|
|
||||||

|
|
||||||
|
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ public class GameService {
|
|||||||
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
|
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
|
||||||
|
|
||||||
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(unmappableFile.getPath()));
|
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(unmappableFile.getPath()));
|
||||||
|
game.setConfirmedMatch(true);
|
||||||
|
|
||||||
game = detectedGameRepository.save(game);
|
game = detectedGameRepository.save(game);
|
||||||
|
|
||||||
unmappableFileRepository.delete(unmappableFile);
|
unmappableFileRepository.delete(unmappableFile);
|
||||||
@@ -117,8 +119,12 @@ public class GameService {
|
|||||||
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
|
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Game with slug '%s' does not exist on IGDB.".formatted(slug)));
|
||||||
|
|
||||||
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(existingGame.getPath()));
|
DetectedGame game = gameMapper.toDetectedGame(igdbGame, Path.of(existingGame.getPath()));
|
||||||
|
game.setConfirmedMatch(true);
|
||||||
|
|
||||||
game = detectedGameRepository.save(game);
|
game = detectedGameRepository.save(game);
|
||||||
|
|
||||||
|
detectedGameRepository.delete(existingGame);
|
||||||
|
|
||||||
return game;
|
return game;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "frontend",
|
"name": "frontend",
|
||||||
"version": "1.2.4-SNAPSHOT",
|
"version": "1.2.5-SNAPSHOT",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "frontend",
|
"name": "frontend",
|
||||||
"version": "1.2.4-SNAPSHOT",
|
"version": "1.2.5-SNAPSHOT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "^14.0.0",
|
"@angular/animations": "^14.0.0",
|
||||||
"@angular/cdk": "^14.1.0",
|
"@angular/cdk": "^14.1.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "frontend",
|
"name": "frontend",
|
||||||
"version": "1.2.4-SNAPSHOT",
|
"version": "1.2.5-SNAPSHOT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"start": "ng serve",
|
"start": "ng serve",
|
||||||
|
|||||||
Reference in New Issue
Block a user