From 007c42ddb506a29baa3f42c224c969da5d13f028 Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Sat, 16 Nov 2019 20:02:29 +0100 Subject: [PATCH 01/24] General improvement for API and assured that methods are accessible without the import task --- game_collection/tasks.py | 3 +- game_collection/tests.py | 51 +++++++++++++++++++++++ game_collection/views.py | 2 +- game_database/functions.py | 85 ++++++++++++++++++++++++-------------- game_database/views.py | 8 ++-- requirements.txt | 1 + 6 files changed, 113 insertions(+), 37 deletions(-) diff --git a/game_collection/tasks.py b/game_collection/tasks.py index 5bd30d4..abb3d35 100644 --- a/game_collection/tasks.py +++ b/game_collection/tasks.py @@ -166,6 +166,7 @@ def import_collection_task(self, titles, username): for i in range(total_titles): title = titles[i] + user = User.objects.get(username=username) if not Platform.objects.filter(name=title["platform"]).exists(): @@ -194,6 +195,7 @@ def import_collection_task(self, titles, username): collection_entry["time_played"] = title["time_played"] for tag_name in title["tags"].split(";"): + if not Tag.objects.filter(name=tag_name, user=user).exists(): Tag.objects.create(name=tag_name, user=user) @@ -209,7 +211,6 @@ def import_collection_task(self, titles, username): queue_titles += 1 elif list_type == "PLAYING": - if title["date_started"] != "": collection_entry["date_started"] = title["date_started"] diff --git a/game_collection/tests.py b/game_collection/tests.py index a39b155..85bd50c 100644 --- a/game_collection/tests.py +++ b/game_collection/tests.py @@ -1 +1,52 @@ # Create your tests here. + +from django.test import TestCase + +from game_database.functions import GameCollectionController, HowLongToBeatAPI +from game_database.models import Platform + + +class HLTBTest(TestCase): + + def setUp(self): + + pc = Platform.objects.create(name="PC") + + self.game = GameCollectionController.create_game(1539, pc) + + # Removing times for update test + self.game.main_time = 0 + self.game.extra_time = 0 + self.game.completion_time = 0 + + def test_load_times(self): + + times = HowLongToBeatAPI.load_times(self.game) + + self.assertTrue(isinstance(times.gameplay_main, str)) + self.assertTrue(isinstance(times.gameplay_main_extra, str)) + self.assertTrue(isinstance(times.gameplay_completionist, str)) + + def test_update_times(self): + times = HowLongToBeatAPI.load_times(self.game) + + if str(times.gameplay_main) != "-1": + main_time = times.gameplay_main.replace("½", ".5") + else: + main_time = 0 + + if str(times.gameplay_main_extra) != "-1": + extra_time = times.gameplay_main_extra.replace("½", ".5") + else: + extra_time = 0 + + if str(times.gameplay_completionist) != "-1": + completion_time = times.gameplay_completionist.replace("½", ".5") + else: + completion_time = 0 + + HowLongToBeatAPI.update_game_hltb(self.game) + + self.assertEquals(self.game.main_time, float(main_time)) + self.assertEquals(self.game.extra_time, float(extra_time)) + self.assertEquals(self.game.completion_time, float(completion_time)) diff --git a/game_collection/views.py b/game_collection/views.py index fa294ab..820f9d2 100644 --- a/game_collection/views.py +++ b/game_collection/views.py @@ -82,7 +82,7 @@ def import_list(request): if "remove-header" in request.POST: csv_file.pop(0) # Removes headers - print(csv_file) + # print(csv_file) result = verify_list_task.delay(csv_file) diff --git a/game_database/functions.py b/game_database/functions.py index 3168410..c10a3e8 100644 --- a/game_database/functions.py +++ b/game_database/functions.py @@ -2,6 +2,7 @@ from enum import Enum import requests +import unidecode from howlongtobeatpy import HowLongToBeat from GameHoarder.settings import API_KEY @@ -27,7 +28,7 @@ def load_json(resource_url, params): request_url = BASE_URL + resource_url r = requests.get(url=request_url, headers=HEADERS, params=params) - print(r.url) + # print(r.url) return r.json() @staticmethod @@ -43,6 +44,20 @@ def search(query, resource, limit): return GiantBombAPI.load_json("search", params)["results"] + @staticmethod + def search_game(game_title, platform_name, limit): + data = GiantBombAPI.search(game_title, "game", limit) + + for result in data: + + platforms = result["platforms"] + if platforms is not None: + for platform_data in platforms: + if platform_data["name"] == platform_name: + return result + + return None + @staticmethod def search_releases(game_id, platform, limit): @@ -58,44 +73,35 @@ def search_releases(game_id, platform, limit): return GiantBombAPI.load_json("releases", params)["results"] @staticmethod - def load(id, resource): + def load(resource_id, resource): if resource == ResourceType.GAME: - resource_url = "game/3030-%s" % id + resource_url = "game/3030-%s" % resource_id params = { "api_key": API_KEY, "format": "json", } + elif resource == ResourceType.RELEASE: - resource_url = "release/3050-%s" % id + resource_url = "release/3050-%s" % resource_id params = { "api_key": API_KEY, "format": "json", } + else: return None return GiantBombAPI.load_json(resource_url, params)["results"] - @staticmethod - def search_game(game_title, platform_name, limit): - data = GiantBombAPI.search(game_title, "game", limit) - - for result in data: - - platforms = result["platforms"] - if platforms is not None: - for platform_data in platforms: - if platform_data["name"] == platform_name: - return result - - return None - class HowLongToBeatAPI: @staticmethod - def load_times(game_title): - results = HowLongToBeat().search(game_title) + def load_times(game): + # This will remove accents + stripped_title = unidecode.unidecode(game.title) + + results = HowLongToBeat().search(stripped_title) max_sim = -1 best_element = None @@ -104,13 +110,16 @@ def load_times(game_title): max_sim = element.similarity best_element = element + # print("Pulled times for %s: [ %s, %s, %s]" % ( + # game.title, best_element.gameplay_main, best_element.gameplay_main_extra, + # best_element.gameplay_completionist)) + return best_element @staticmethod def update_game_hltb(game): - # TODO this does not recognize special characters see Abzu - times = HowLongToBeatAPI.load_times(game.title) + times = HowLongToBeatAPI.load_times(game) if times is not None: if str(times.gameplay_main) != "-1": @@ -123,6 +132,9 @@ def update_game_hltb(game): game.completion_time = float(times.gameplay_completionist.replace("½", ".5")) game.save() + return True + + return False class GameCollectionController: @@ -131,27 +143,31 @@ class GameCollectionController: def create_game(db_id, platform): game = Game.objects.create(db_id=db_id) - game_data = GiantBombAPI.load(db_id, ResourceType.GAME) - - GameCollectionController.update_game(game, game_data) + GameCollectionController.update_game(game) HowLongToBeatAPI.update_game_hltb(game) - GameCollectionController.create_gameversion(game, platform) + game_version = GameCollectionController.create_gameversion(game, platform) - return False + return game_version @staticmethod def create_gameversion(game, platform): results = GiantBombAPI.search_releases(game.db_id, platform, 1) + if len(results) > 0: version_data = results[0] game_version = GameVersion.objects.create(parent_game=game, platform=platform, db_id=version_data["id"]) GameCollectionController.update_game_version(game_version, version_data) + + return game_version else: - game_version = GameVersion.objects.create(parent_game=game, platform=platform) + # In some weird cases a game does not have a game version in it + return GameVersion.objects.create(parent_game=game, platform=platform) @staticmethod - def update_game(game, data): + def update_game(game): + + data = GiantBombAPI.load(game.db_id, ResourceType.GAME) if "name" in data: game.title = data["name"] @@ -176,7 +192,16 @@ def update_game(game, data): game.save() @staticmethod - def update_game_version(game_version, data): + def update_game_version(game_version, data=None): + + if data is None: + results = GiantBombAPI.search_releases(game_version.parent_game.db_id, game_version.platform, 1) + + if len(results) > 0: + data = results[0] + + else: + data = None if "release_date" in data: string_date = data["release_date"] diff --git a/game_database/views.py b/game_database/views.py index 352287f..0d9816f 100644 --- a/game_database/views.py +++ b/game_database/views.py @@ -1,6 +1,6 @@ from django.http import HttpResponse -from game_database.functions import GiantBombAPI, HowLongToBeatAPI +from game_database.functions import HowLongToBeatAPI, GameCollectionController from game_database.models import Game, GameVersion, Genre, Platform @@ -8,14 +8,12 @@ def update_games(request): game_versions = GameVersion.objects.filter(update=True) for game_version in game_versions: - data = GiantBombAPI.load_release(game_version.db_id)["results"] - GiantBombAPI.update_game_version(game_version, data) + GameCollectionController.update_game_version(game_version) games = Game.objects.filter(update=True) for game in games: - data = GiantBombAPI.load_game(game.db_id)["results"] - GiantBombAPI.update_game(game, data) + GameCollectionController.update_game(game) games = Game.objects.all() diff --git a/requirements.txt b/requirements.txt index c775c7b..2eac595 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ Django pytz mysqlclient setuptools +unidecode howlongtobeatpy requests celery From 585a6e07ffb5689057611ba18778a279bdb77d59 Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Sun, 17 Nov 2019 18:43:40 +0100 Subject: [PATCH 02/24] Added more info to platforms --- GameHoarder/settings.py | 1 + game_collection/models.py | 4 +- game_collection/tasks.py | 15 ++-- game_collection/tests.py | 2 +- game_database/functions.py | 69 ++++++++++++++++--- .../migrations/0002_auto_20191117_1250.py | 39 +++++++++++ game_database/models.py | 8 ++- 7 files changed, 118 insertions(+), 20 deletions(-) create mode 100644 game_database/migrations/0002_auto_20191117_1250.py diff --git a/GameHoarder/settings.py b/GameHoarder/settings.py index 432336f..8d27371 100644 --- a/GameHoarder/settings.py +++ b/GameHoarder/settings.py @@ -136,6 +136,7 @@ STATIC_URL = '/static/' API_KEY = "your-key-here" +DEV_MAIL = "your-mail-here" BROKER_URL = 'redis://localhost:6379' CELERY_RESULT_BACKEND = 'redis://localhost:6379' diff --git a/game_collection/models.py b/game_collection/models.py index b3d8b20..4256605 100644 --- a/game_collection/models.py +++ b/game_collection/models.py @@ -102,7 +102,7 @@ class Meta: class TagGroup(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user")) - name = models.CharField(max_length=16, verbose_name=_("name")) + name = models.CharField(max_length=16, verbose_name=_("name"), unique=True) def __str__(self): return self.name @@ -115,7 +115,7 @@ class Meta: class Tag(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user")) - name = models.CharField(max_length=16, verbose_name=_("name")) + name = models.CharField(max_length=16, verbose_name=_("name"), unique=True) game_version = models.ManyToManyField(GameVersion, verbose_name=_("game version")) tag_group = models.ForeignKey(TagGroup, on_delete=models.SET_NULL, blank=True, null=True, diff --git a/game_collection/tasks.py b/game_collection/tasks.py index abb3d35..25d15ee 100644 --- a/game_collection/tasks.py +++ b/game_collection/tasks.py @@ -41,10 +41,10 @@ def verify_collection_task(self, csv_file): if title["id"] == "": - platform_name = title["platform"] + platform_id = GiantBombAPI.search_platform(title["platform"])["id"] original_name = title["name"] - result = GiantBombAPI.search_game(original_name, platform_name, 10) + result = GiantBombAPI.search_game(original_name, platform_id, 10) if result is not None: title["id"] = result["id"] @@ -109,11 +109,10 @@ def verify_list_task(self, csv_file): } if title["id"] == "": - - platform_name = title["platform"] + platform_id = GiantBombAPI.search_platform(title["platform"])["id"] original_name = title["name"] - result = GiantBombAPI.search_game(original_name, platform_name, 10) + result = GiantBombAPI.search_game(original_name, platform_id, 10) if result is not None: title["id"] = result["id"] @@ -170,7 +169,8 @@ def import_collection_task(self, titles, username): user = User.objects.get(username=username) if not Platform.objects.filter(name=title["platform"]).exists(): - Platform.objects.create(name=title["platform"]) + platform_id = GiantBombAPI.search_platform(title["platform"])["id"] + GameCollectionController.create_platform(platform_id) platform = Platform.objects.get(name=title["platform"]) @@ -288,7 +288,8 @@ def import_list_task(self, titles, username): user = User.objects.get(username=username) if not Platform.objects.filter(name=title["platform"]).exists(): - Platform.objects.create(name=title["platform"]) + platform_id = GiantBombAPI.search_platform(title["platform"])["id"] + GameCollectionController.create_platform(platform_id) platform = Platform.objects.get(name=title["platform"]) diff --git a/game_collection/tests.py b/game_collection/tests.py index 85bd50c..b9a0fc3 100644 --- a/game_collection/tests.py +++ b/game_collection/tests.py @@ -12,7 +12,7 @@ def setUp(self): pc = Platform.objects.create(name="PC") - self.game = GameCollectionController.create_game(1539, pc) + self.game = GameCollectionController.create_game(1539, pc).parent_game # Removing times for update test self.game.main_time = 0 diff --git a/game_database/functions.py b/game_database/functions.py index c10a3e8..08d9a66 100644 --- a/game_database/functions.py +++ b/game_database/functions.py @@ -5,20 +5,21 @@ import unidecode from howlongtobeatpy import HowLongToBeat -from GameHoarder.settings import API_KEY -from game_database.models import Genre, Game, GameVersion +from GameHoarder.settings import API_KEY, DEV_MAIL +from game_database.models import Genre, Game, GameVersion, Platform BASE_URL = "https://www.giantbomb.com/api/" HEADERS = { 'User-Agent': 'GameCollection 1.0', - 'From': 'jailander@protonmail.com' # This is another valid field + 'From': DEV_MAIL } class ResourceType(Enum): GAME = "game" RELEASE = "release" + PLATFORM = "platform" class GiantBombAPI: @@ -45,23 +46,41 @@ def search(query, resource, limit): return GiantBombAPI.load_json("search", params)["results"] @staticmethod - def search_game(game_title, platform_name, limit): - data = GiantBombAPI.search(game_title, "game", limit) + def search_platform(platform_name): + + filter_field = "filter=name:%s" % platform_name + + params = { + "api_key": API_KEY, + "format": "json", + "filter": filter_field, + } + + data = GiantBombAPI.load_json("platforms", params)["results"] for result in data: + if result["name"] == platform_name: + return result + + return None + + @staticmethod + def search_game(game_title, platform_id, limit): + data = GiantBombAPI.search(game_title, "game", limit) + for result in data: platforms = result["platforms"] if platforms is not None: for platform_data in platforms: - if platform_data["name"] == platform_name: + if platform_data["id"] == platform_id: return result return None @staticmethod - def search_releases(game_id, platform, limit): + def search_releases(game_id, platform_id, limit): - filter_field = "game:%s&filter=platform:%s" % (game_id, platform) + filter_field = "game:%s&filter=platform:%s" % (game_id, platform_id) params = { "api_key": API_KEY, @@ -89,6 +108,13 @@ def load(resource_id, resource): "format": "json", } + elif resource == ResourceType.PLATFORM: + resource_url = "platform/3045-%s" % resource_id + params = { + "api_key": API_KEY, + "format": "json", + } + else: return None @@ -139,6 +165,14 @@ def update_game_hltb(game): class GameCollectionController: + @staticmethod + def create_platform(db_id): + platform = Platform.objects.create(db_id=db_id) + + GameCollectionController.update_platform(platform) + + return platform + @staticmethod def create_game(db_id, platform): game = Game.objects.create(db_id=db_id) @@ -152,7 +186,7 @@ def create_game(db_id, platform): @staticmethod def create_gameversion(game, platform): - results = GiantBombAPI.search_releases(game.db_id, platform, 1) + results = GiantBombAPI.search_releases(game.db_id, platform.db_id, 1) if len(results) > 0: version_data = results[0] @@ -164,6 +198,23 @@ def create_gameversion(game, platform): # In some weird cases a game does not have a game version in it return GameVersion.objects.create(parent_game=game, platform=platform) + @staticmethod + def update_platform(platform): + data = GiantBombAPI.load(platform.db_id, ResourceType.PLATFORM) + + if "name" in data: + platform.name = data["name"] + + if "deck" in data: + platform.description = data["deck"] + + if "image" in data: + if "original_url" in data["image"]: + platform.img_url = data["image"]["original_url"] + + platform.update = False + platform.save() + @staticmethod def update_game(game): diff --git a/game_database/migrations/0002_auto_20191117_1250.py b/game_database/migrations/0002_auto_20191117_1250.py new file mode 100644 index 0000000..9fe0b1c --- /dev/null +++ b/game_database/migrations/0002_auto_20191117_1250.py @@ -0,0 +1,39 @@ +# Generated by Django 2.2.2 on 2019-11-17 11:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('game_database', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='platform', + name='db_id', + field=models.CharField(default=1, max_length=16, unique=True, verbose_name='DB ID'), + preserve_default=False, + ), + migrations.AddField( + model_name='platform', + name='description', + field=models.TextField(blank=True, verbose_name='description'), + ), + migrations.AddField( + model_name='platform', + name='img_url', + field=models.CharField(blank=True, max_length=128, verbose_name='image url'), + ), + migrations.AddField( + model_name='platform', + name='update', + field=models.BooleanField(default=True), + ), + migrations.AlterField( + model_name='platform', + name='name', + field=models.CharField(blank=True, max_length=64, verbose_name='name'), + ), + ] diff --git a/game_database/models.py b/game_database/models.py index 6cff677..e698066 100644 --- a/game_database/models.py +++ b/game_database/models.py @@ -40,7 +40,13 @@ class Meta: class Platform(models.Model): - name = models.CharField(max_length=64, verbose_name=_("name"), unique=True) + name = models.CharField(max_length=64, verbose_name=_("name"), blank=True) + db_id = models.CharField(max_length=16, verbose_name=_("DB ID"), unique=True) + + description = models.TextField(verbose_name=_("description"), blank=True) + img_url = models.CharField(max_length=128, verbose_name=_("image url"), blank=True) + + update = models.BooleanField(default=True) def __str__(self): return self.name From f665eda2a8f1b41389309cf813de54d86062589c Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Sun, 17 Nov 2019 18:57:32 +0100 Subject: [PATCH 03/24] made platform optional for search --- game_collection/tasks.py | 4 ++-- game_collection/tests.py | 2 +- game_database/functions.py | 17 ++++++++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/game_collection/tasks.py b/game_collection/tasks.py index 25d15ee..17395d2 100644 --- a/game_collection/tasks.py +++ b/game_collection/tasks.py @@ -44,7 +44,7 @@ def verify_collection_task(self, csv_file): platform_id = GiantBombAPI.search_platform(title["platform"])["id"] original_name = title["name"] - result = GiantBombAPI.search_game(original_name, platform_id, 10) + result = GiantBombAPI.search_game(original_name, 10, platform_id) if result is not None: title["id"] = result["id"] @@ -112,7 +112,7 @@ def verify_list_task(self, csv_file): platform_id = GiantBombAPI.search_platform(title["platform"])["id"] original_name = title["name"] - result = GiantBombAPI.search_game(original_name, platform_id, 10) + result = GiantBombAPI.search_game(original_name, 10, platform_id) if result is not None: title["id"] = result["id"] diff --git a/game_collection/tests.py b/game_collection/tests.py index b9a0fc3..b5dcffa 100644 --- a/game_collection/tests.py +++ b/game_collection/tests.py @@ -49,4 +49,4 @@ def test_update_times(self): self.assertEquals(self.game.main_time, float(main_time)) self.assertEquals(self.game.extra_time, float(extra_time)) - self.assertEquals(self.game.completion_time, float(completion_time)) + self.assertEquals(self.game.completion_time, float(completion_time)) \ No newline at end of file diff --git a/game_database/functions.py b/game_database/functions.py index 08d9a66..e0373f2 100644 --- a/game_database/functions.py +++ b/game_database/functions.py @@ -65,15 +65,18 @@ def search_platform(platform_name): return None @staticmethod - def search_game(game_title, platform_id, limit): + def search_game(game_title, limit, platform_id = None): data = GiantBombAPI.search(game_title, "game", limit) - for result in data: - platforms = result["platforms"] - if platforms is not None: - for platform_data in platforms: - if platform_data["id"] == platform_id: - return result + if platform_id is not None: + for result in data: + platforms = result["platforms"] + if platforms is not None: + for platform_data in platforms: + if platform_data["id"] == platform_id: + return result + else: + return data return None From 456638ce63c34f051549c2c652cf50232b0ce23d Mon Sep 17 00:00:00 2001 From: Carlos Date: Sun, 17 Nov 2019 19:13:46 +0100 Subject: [PATCH 04/24] Menu and tags --- game_collection/urls.py | 3 + game_collection/views.py | 24 +++-- game_collection/views_tables.py | 29 +++++- .../collection/tables/tag_table.html | 92 +++++++++++++++++++ gamehoarder_site/templates/sidebar.html | 12 ++- gamehoarder_site/urls.py | 3 +- gamehoarder_site/views.py | 11 ++- 7 files changed, 162 insertions(+), 12 deletions(-) create mode 100644 gamehoarder_site/templates/collection/tables/tag_table.html diff --git a/game_collection/urls.py b/game_collection/urls.py index 333e030..5ea1b63 100644 --- a/game_collection/urls.py +++ b/game_collection/urls.py @@ -19,4 +19,7 @@ path('collection/finished', views_tables.finished_table, name='finished_table'), path('collection/played', views_tables.played_table, name='played_table'), path('collection/abandoned', views_tables.abandoned_table, name='abandoned_table'), + + path('search', views.game_search, name='game_search'), + path('tag/', views_tables.tag_table, name='tag_table'), ] diff --git a/game_collection/views.py b/game_collection/views.py index fa294ab..8df213f 100644 --- a/game_collection/views.py +++ b/game_collection/views.py @@ -8,6 +8,7 @@ from GameHoarder.settings import BASE_DIR from game_collection.tasks import * +from game_collection.models import * def read_csv(file): @@ -19,12 +20,17 @@ def read_csv(file): def collection_summary(request): - return render(request, "collection/collection_summary.html") + custom = Tag.objects.filter(user=request.user) + + context = { + "tags": custom + } + return render(request, "collection/collection_summary.html", context) def import_collection(request): if request.method == 'POST': - + custom = Tag.objects.filter(user=request.user) if "collection" in request.FILES: myfile = request.FILES['collection'] fs = FileSystemStorage() @@ -37,7 +43,7 @@ def import_collection(request): result = verify_collection_task.delay(csv_file) - context = {"stage": 2, 'task_id': result.task_id} + context = {"stage": 2, 'task_id': result.task_id, "tags": custom} return render(request, 'collection/import_collection.html', context) @@ -50,6 +56,7 @@ def import_collection(request): context = task.get() context["stage"] = int(request.POST.get("stage")) + context["tags"] = custom return render(request, 'collection/import_collection.html', context) @@ -62,7 +69,7 @@ def import_collection(request): result = import_collection_task.delay(titles, request.user.username) - context = {"stage": 3, 'task_id': result.task_id} + context = {"stage": 3, 'task_id': result.task_id, "tags": custom} return render(request, 'collection/import_collection.html', context) @@ -71,7 +78,7 @@ def import_collection(request): def import_list(request): if request.method == 'POST': - + custom = Tag.objects.filter(user=request.user) if "list" in request.FILES: myfile = request.FILES['list'] fs = FileSystemStorage() @@ -86,7 +93,7 @@ def import_list(request): result = verify_list_task.delay(csv_file) - context = {"stage": 2, 'task_id': result.task_id} + context = {"stage": 2, 'task_id': result.task_id, "tags": custom} return render(request, 'collection/import_list.html', context) @@ -99,6 +106,7 @@ def import_list(request): context = task.get() context["stage"] = int(request.POST.get("stage")) + context["tags"] = custom return render(request, 'collection/import_list.html', context) @@ -349,3 +357,7 @@ def export_list(request): writer.writerow(row) return response + + +def game_search(request): + return render(request, 'index.html') \ No newline at end of file diff --git a/game_collection/views_tables.py b/game_collection/views_tables.py index e58789d..84eb73c 100644 --- a/game_collection/views_tables.py +++ b/game_collection/views_tables.py @@ -1,12 +1,14 @@ from django.shortcuts import render -from game_collection.models import Finished, Abandoned, Played, Playing, Queue, Interested, Wishlist +from game_collection.models import Finished, Abandoned, Played, Playing, Queue, Interested, Wishlist, Tag def queue_table(request): titles = Queue.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "titles": titles } @@ -15,8 +17,10 @@ def queue_table(request): def playing_table(request): titles = Playing.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "titles": titles } @@ -25,8 +29,10 @@ def playing_table(request): def finished_table(request): titles = Finished.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "titles": titles } @@ -35,8 +41,10 @@ def finished_table(request): def played_table(request): titles = Played.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "titles": titles } @@ -45,8 +53,10 @@ def played_table(request): def abandoned_table(request): titles = Abandoned.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "titles": titles } @@ -55,8 +65,10 @@ def abandoned_table(request): def insterested_table(request): titles = Interested.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "list_type": "interested", "titles": titles } @@ -66,10 +78,25 @@ def insterested_table(request): def wishlist_table(request): titles = Wishlist.objects.filter(user=request.user) + custom = Tag.objects.filter(user=request.user) context = { + "tags": custom, "list_type": "wishlist", "titles": titles } return render(request, "collection/tables/list_table.html", context) + + +def tag_table(request): + custom = Tag.objects.filter(user=request.user) + tag = Tag.objects.get(name=request.GET['tag'], user=request.user) + games = tag.game_version.all() + context = { + "tags": custom, + "list_type": tag.name, + "titles": games + } + + return render(request, "collection/tables/tag_table.html", context) diff --git a/gamehoarder_site/templates/collection/tables/tag_table.html b/gamehoarder_site/templates/collection/tables/tag_table.html new file mode 100644 index 0000000..c7b2b7e --- /dev/null +++ b/gamehoarder_site/templates/collection/tables/tag_table.html @@ -0,0 +1,92 @@ +{% extends "base_site.html" %} +{% load static %} +{% load i18n %} + +{% block title %}{{ list_type|title }}{% endblock title %} + +{% block stylesheets %} + {{ block.super }} +{% endblock stylesheets %} + +{% block content %} + +
+
+
+
+

{{ list_type|title }}

+
+ +
+
+ +
+
+
+
+

{% trans "Titles" %}

+ +
+
+
+ + + + + + + + + + + {% for title in titles %} + + + + + + + {% endfor %} + +
PlatformGameMain TimeMain + Extra Time
+ {{ title.platform.name }} + + {{ title.parent_game.title }} + + {{ title.parent_game.main_time }} + + {{ title.parent_game.extra_time }} +
+
+
+
+
+
+
+{% endblock content %} + +{% block javascripts %} + {{ block.super }} + + + + + + + + + + + + + + + + + + +{% endblock javascripts %} diff --git a/gamehoarder_site/templates/sidebar.html b/gamehoarder_site/templates/sidebar.html index 65e4e02..ee8971d 100644 --- a/gamehoarder_site/templates/sidebar.html +++ b/gamehoarder_site/templates/sidebar.html @@ -2,7 +2,7 @@
@@ -27,6 +27,7 @@

John Doe

{% trans "General" %}

diff --git a/gamehoarder_site/urls.py b/gamehoarder_site/urls.py index 98ec80f..5a0a8da 100644 --- a/gamehoarder_site/urls.py +++ b/gamehoarder_site/urls.py @@ -3,8 +3,7 @@ from . import views urlpatterns = [ - path('', views.index, name='index'), - + path('friends', views.friends, name='friends'), path('export', views.download_csv, name='download_csv'), ] diff --git a/gamehoarder_site/views.py b/gamehoarder_site/views.py index 3d4a76b..f9d1e64 100644 --- a/gamehoarder_site/views.py +++ b/gamehoarder_site/views.py @@ -3,11 +3,18 @@ from django.http import HttpResponse from django.shortcuts import render - +from game_collection.models import Tag def index(request): - return render(request, "index.html") + custom = Tag.objects.filter(user=request.user) + context = { + "tags": custom + } + return render(request, "index.html", context) + +def friends(request): + return render(request, "index.html") def download_csv(request): if request.method == 'POST': From 5b9f989a12049858ef50786eb97fdf734eafb84e Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Sun, 17 Nov 2019 19:40:32 +0100 Subject: [PATCH 05/24] Adding more info to game and gameversion --- game_collection/migrations/0001_initial.py | 77 +- game_database/admin.py | 1 + game_database/functions.py | 41 +- game_database/migrations/0001_initial.py | 34 +- .../migrations/0002_auto_20191117_1250.py | 39 - game_database/models.py | 18 + utils/test_db.json | 7920 +++-------------- 7 files changed, 1575 insertions(+), 6555 deletions(-) delete mode 100644 game_database/migrations/0002_auto_20191117_1250.py diff --git a/game_collection/migrations/0001_initial.py b/game_collection/migrations/0001_initial.py index aca6e77..d48a52d 100644 --- a/game_collection/migrations/0001_initial.py +++ b/game_collection/migrations/0001_initial.py @@ -1,18 +1,19 @@ -# Generated by Django 2.2.2 on 2019-06-24 09:42 +# Generated by Django 2.2.2 on 2019-11-17 18:25 -import django.utils.timezone from django.conf import settings from django.db import migrations, models - +import django.db.models.deletion +import django.utils.timezone import game_collection.models class Migration(migrations.Migration): + initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('game_database', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -21,11 +22,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_added', models.DateField(default=django.utils.timezone.now, verbose_name='date added')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Wishlist', @@ -36,9 +34,8 @@ class Migration(migrations.Migration): name='TagGroup', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=16, verbose_name='name')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('name', models.CharField(max_length=16, unique=True, verbose_name='name')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Tag Group', @@ -53,11 +50,8 @@ class Migration(migrations.Migration): ('date_adquired', models.DateField(blank=True, null=True, verbose_name='date adquired')), ('time_played', models.FloatField(blank=True, null=True, verbose_name='time played')), ('date_started', models.DateField(blank=True, null=True, verbose_name='date started')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Playing', @@ -72,11 +66,8 @@ class Migration(migrations.Migration): ('time_played', models.FloatField(blank=True, null=True, verbose_name='time played')), ('date_started', models.DateField(blank=True, null=True, verbose_name='date started')), ('date_stopped', models.DateField(blank=True, null=True, verbose_name='date stopped')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Played', @@ -88,11 +79,8 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_added', models.DateField(default=django.utils.timezone.now, verbose_name='date added')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Interested', @@ -108,16 +96,9 @@ class Migration(migrations.Migration): ('date_started', models.DateField(blank=True, null=True, verbose_name='date started')), ('date_finished', models.DateField(blank=True, null=True, verbose_name='date finished')), ('time_to_finish', models.FloatField(blank=True, null=True, verbose_name='time to finish')), - ('playstyle', models.CharField( - choices=[(game_collection.models.PlaystyleChoice('Main Story'), 'Main Story'), - (game_collection.models.PlaystyleChoice('Main + Extra'), 'Main + Extra'), - (game_collection.models.PlaystyleChoice('Completionist'), 'Completionist')], max_length=5, - verbose_name='playstyle')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('playstyle', models.CharField(choices=[(game_collection.models.PlaystyleChoice('Main Story'), 'Main Story'), (game_collection.models.PlaystyleChoice('Main + Extra'), 'Main + Extra'), (game_collection.models.PlaystyleChoice('Completionist'), 'Completionist')], max_length=5, verbose_name='playstyle')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Finished', @@ -132,11 +113,8 @@ class Migration(migrations.Migration): ('time_played', models.FloatField(blank=True, null=True, verbose_name='time played')), ('date_started', models.DateField(blank=True, null=True, verbose_name='date started')), ('date_abandoned', models.DateField(blank=True, null=True, verbose_name='date abandoned')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Abandoned', @@ -147,12 +125,10 @@ class Migration(migrations.Migration): name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=16, verbose_name='name')), + ('name', models.CharField(max_length=16, unique=True, verbose_name='name')), ('game_version', models.ManyToManyField(to='game_database.GameVersion', verbose_name='game version')), - ('tag_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, - to='game_collection.TagGroup', verbose_name='tag group')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('tag_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='game_collection.TagGroup', verbose_name='tag group')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'verbose_name': 'Tag', @@ -166,11 +142,8 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_adquired', models.DateField(blank=True, null=True, verbose_name='date adquired')), ('time_played', models.FloatField(blank=True, null=True, verbose_name='time played')), - ('game_version', - models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', - verbose_name='game version')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, - verbose_name='user')), + ('game_version', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='game_database.GameVersion', verbose_name='game version')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ 'abstract': False, diff --git a/game_database/admin.py b/game_database/admin.py index 15e646b..a0c2992 100644 --- a/game_database/admin.py +++ b/game_database/admin.py @@ -20,5 +20,6 @@ class GameVersionAdmin(admin.ModelAdmin): admin.site.register(Platform) admin.site.register(Genre) +admin.site.register(Company) admin.site.register(Game, GameAdmin) admin.site.register(GameVersion, GameVersionAdmin) diff --git a/game_database/functions.py b/game_database/functions.py index e0373f2..9e1f616 100644 --- a/game_database/functions.py +++ b/game_database/functions.py @@ -6,7 +6,7 @@ from howlongtobeatpy import HowLongToBeat from GameHoarder.settings import API_KEY, DEV_MAIL -from game_database.models import Genre, Game, GameVersion, Platform +from game_database.models import Genre, Game, GameVersion, Platform, Company BASE_URL = "https://www.giantbomb.com/api/" @@ -65,7 +65,7 @@ def search_platform(platform_name): return None @staticmethod - def search_game(game_title, limit, platform_id = None): + def search_game(game_title, limit, platform_id=None): data = GiantBombAPI.search(game_title, "game", limit) if platform_id is not None: @@ -235,12 +235,19 @@ def update_game(game): game.genres.clear() for genre in data["genres"]: - genre_name = genre["name"] + genre_id = genre["id"] - if Genre.objects.filter(name=genre_name).exists(): - game.genres.add(Genre.objects.get(name=genre_name)) + if Genre.objects.filter(db_id=genre_id).exists(): + game.genres.add(Genre.objects.get(db_id=genre_id)) else: - game.genres.add(Genre.objects.create(name=genre_name)) + game.genres.add(Genre.objects.create(db_id=genre_id, name=genre["name"])) + + if "deck" in data: + game.description = data["deck"] + + if "image" in data: + if "original_url" in data["image"]: + game.img_url = data["image"]["original_url"] game.update = False game.save() @@ -262,5 +269,27 @@ def update_game_version(game_version, data=None): if string_date is not None: game_version.release_date = datetime.strptime(string_date, '%Y-%m-%d %H:%M:%S') + if "publishers" in data: + game_version.publishers.clear() + + for company in data["publishers"]: + company_id = company["id"] + + if Company.objects.filter(db_id=company_id).exists(): + game_version.publishers.add(Company.objects.get(db_id=company_id)) + else: + game_version.publishers.add(Company.objects.create(db_id=company_id, name=company["name"])) + + if "developers" in data: + game_version.developers.clear() + + for company in data["publishers"]: + company_id = company["id"] + + if Company.objects.filter(db_id=company_id).exists(): + game_version.developers.add(Company.objects.get(db_id=company_id)) + else: + game_version.developers.add(Company.objects.create(db_id=company_id, name=company["name"])) + game_version.update = False game_version.save() diff --git a/game_database/migrations/0001_initial.py b/game_database/migrations/0001_initial.py index 5f52f6f..b058b20 100644 --- a/game_database/migrations/0001_initial.py +++ b/game_database/migrations/0001_initial.py @@ -1,16 +1,29 @@ -# Generated by Django 2.2.2 on 2019-06-24 09:42 +# Generated by Django 2.2.2 on 2019-11-17 18:25 -import django.db.models.deletion from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): + initial = True dependencies = [ ] operations = [ + migrations.CreateModel( + name='Company', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ], + options={ + 'verbose_name': 'Company', + 'verbose_name_plural': 'Companies', + }, + ), migrations.CreateModel( name='Game', fields=[ @@ -21,6 +34,8 @@ class Migration(migrations.Migration): ('extra_time', models.FloatField(default=0, verbose_name='extra time')), ('completion_time', models.FloatField(default=0, verbose_name='completion time')), ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('img_url', models.CharField(blank=True, max_length=128, verbose_name='image url')), ('update', models.BooleanField(default=True, verbose_name='update')), ], options={ @@ -33,6 +48,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), ], options={ 'verbose_name': 'Genre', @@ -43,7 +59,11 @@ class Migration(migrations.Migration): name='Platform', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), + ('name', models.CharField(blank=True, max_length=64, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('img_url', models.CharField(blank=True, max_length=128, verbose_name='image url')), + ('update', models.BooleanField(default=True)), ], options={ 'verbose_name': 'Platform', @@ -57,10 +77,10 @@ class Migration(migrations.Migration): ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), ('db_id', models.CharField(max_length=16)), ('update', models.BooleanField(default=True)), - ( - 'parent_game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Game')), - ('platform', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Platform')), + ('developers', models.ManyToManyField(related_name='developers', to='game_database.Company', verbose_name='developers')), + ('parent_game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Game')), + ('platform', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Platform')), + ('publishers', models.ManyToManyField(related_name='publishers', to='game_database.Company', verbose_name='publishers')), ], options={ 'verbose_name': 'Game Version', diff --git a/game_database/migrations/0002_auto_20191117_1250.py b/game_database/migrations/0002_auto_20191117_1250.py deleted file mode 100644 index 9fe0b1c..0000000 --- a/game_database/migrations/0002_auto_20191117_1250.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 2.2.2 on 2019-11-17 11:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('game_database', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='platform', - name='db_id', - field=models.CharField(default=1, max_length=16, unique=True, verbose_name='DB ID'), - preserve_default=False, - ), - migrations.AddField( - model_name='platform', - name='description', - field=models.TextField(blank=True, verbose_name='description'), - ), - migrations.AddField( - model_name='platform', - name='img_url', - field=models.CharField(blank=True, max_length=128, verbose_name='image url'), - ), - migrations.AddField( - model_name='platform', - name='update', - field=models.BooleanField(default=True), - ), - migrations.AlterField( - model_name='platform', - name='name', - field=models.CharField(blank=True, max_length=64, verbose_name='name'), - ), - ] diff --git a/game_database/models.py b/game_database/models.py index e698066..c316b00 100644 --- a/game_database/models.py +++ b/game_database/models.py @@ -4,6 +4,7 @@ class Genre(models.Model): name = models.CharField(max_length=64, verbose_name=_("name"), unique=True) + db_id = models.CharField(max_length=16, verbose_name=_("DB ID"), unique=True) def __str__(self): return self.name @@ -13,6 +14,18 @@ class Meta: verbose_name_plural = _("Genres") +class Company(models.Model): + name = models.CharField(max_length=64, verbose_name=_("name"), unique=True) + db_id = models.CharField(max_length=16, verbose_name=_("DB ID"), unique=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = _("Company") + verbose_name_plural = _("Companies") + + class Game(models.Model): title = models.CharField(max_length=64, blank=True, verbose_name=_("title")) @@ -23,6 +36,8 @@ class Game(models.Model): completion_time = models.FloatField(default=0, verbose_name=_("completion time")) release_date = models.DateField(blank=True, null=True, verbose_name=_("release date")) + description = models.TextField(verbose_name=_("description"), blank=True) + img_url = models.CharField(max_length=128, verbose_name=_("image url"), blank=True) genres = models.ManyToManyField(Genre, verbose_name=_("genres")) @@ -64,6 +79,9 @@ class GameVersion(models.Model): db_id = models.CharField(max_length=16) + publishers = models.ManyToManyField(Company, verbose_name=_("publishers"), related_name="publishers") + developers = models.ManyToManyField(Company, verbose_name=_("developers"), related_name="developers") + update = models.BooleanField(default=True) def __str__(self): diff --git a/utils/test_db.json b/utils/test_db.json index 5a55d11..1d96d06 100644 --- a/utils/test_db.json +++ b/utils/test_db.json @@ -2,8 +2,8 @@ { "model": "auth.user", "fields": { - "password": "pbkdf2_sha256$150000$3gRd3aivov77$TwP3yHFm842RTqfLntZQHJoliH19lIN+HjujoFl0tj8=", - "last_login": "2019-06-24T18:29:33.156Z", + "password": "pbkdf2_sha256$150000$vYaPJxTflWWe$lEsMH/DdVHW1sgXHgQbapSLeR0TezAbVR40k3gOT75k=", + "last_login": "2019-11-17T18:30:49.135Z", "is_superuser": true, "username": "jailander", "first_name": "", @@ -11,6964 +11,2289 @@ "email": "", "is_staff": true, "is_active": true, - "date_joined": "2019-06-24T09:43:58.224Z", + "date_joined": "2019-11-17T18:29:35.531Z", "groups": [], "user_permissions": [] } }, { "model": "game_database.genre", - "pk": 45, - "fields": { - "name": "First-Person Shooter" - } -}, -{ - "model": "game_database.genre", - "pk": 46, - "fields": { - "name": "Action-Adventure" - } -}, -{ - "model": "game_database.genre", - "pk": 47, - "fields": { - "name": "Platformer" - } -}, -{ - "model": "game_database.genre", - "pk": 48, - "fields": { - "name": "Puzzle" - } -}, -{ - "model": "game_database.genre", - "pk": 49, - "fields": { - "name": "Role-Playing" - } -}, -{ - "model": "game_database.genre", - "pk": 50, + "pk": 1, "fields": { - "name": "Action" + "name": "Strategy", + "db_id": "2" } }, { "model": "game_database.genre", - "pk": 51, + "pk": 2, "fields": { - "name": "Simulation" + "name": "Real-Time Strategy", + "db_id": "12" } }, { "model": "game_database.genre", - "pk": 52, + "pk": 3, "fields": { - "name": "Shooter" + "name": "Fighting", + "db_id": "9" } }, { "model": "game_database.genre", - "pk": 53, + "pk": 4, "fields": { - "name": "Adventure" + "name": "Shooter", + "db_id": "11" } }, { "model": "game_database.genre", - "pk": 54, + "pk": 5, "fields": { - "name": "Real-Time Strategy" + "name": "Adventure", + "db_id": "4" } }, { "model": "game_database.genre", - "pk": 55, + "pk": 6, "fields": { - "name": "Strategy" + "name": "Puzzle", + "db_id": "18" } }, { "model": "game_database.genre", - "pk": 56, + "pk": 7, "fields": { - "name": "Fighting" + "name": "Action", + "db_id": "1" } }, { "model": "game_database.genre", - "pk": 57, + "pk": 8, "fields": { - "name": "Brawler" + "name": "Platformer", + "db_id": "41" } }, { "model": "game_database.genre", - "pk": 58, + "pk": 9, "fields": { - "name": "Educational" + "name": "Action-Adventure", + "db_id": "43" } }, { "model": "game_database.genre", - "pk": 59, + "pk": 10, "fields": { - "name": "Card Game" + "name": "Simulation", + "db_id": "7" } }, { "model": "game_database.genre", - "pk": 60, + "pk": 11, "fields": { - "name": "Trivia/Board Game" + "name": "Shoot 'Em Up", + "db_id": "48" } }, { "model": "game_database.genre", - "pk": 61, + "pk": 12, "fields": { - "name": "Driving/Racing" + "name": "Role-Playing", + "db_id": "5" } }, { "model": "game_database.genre", - "pk": 62, + "pk": 13, "fields": { - "name": "Shoot 'Em Up" + "name": "First-Person Shooter", + "db_id": "32" } }, { "model": "game_database.genre", - "pk": 63, + "pk": 14, "fields": { - "name": "Music/Rhythm" + "name": "Card Game", + "db_id": "13" } }, { "model": "game_database.genre", - "pk": 64, + "pk": 15, "fields": { - "name": "Vehicular Combat" + "name": "Trivia/Board Game", + "db_id": "14" } }, { "model": "game_database.genre", - "pk": 65, + "pk": 16, "fields": { - "name": "Compilation" + "name": "Driving/Racing", + "db_id": "6" } }, { "model": "game_database.genre", - "pk": 66, + "pk": 17, "fields": { - "name": "Dual-Joystick Shooter" + "name": "Brawler", + "db_id": "37" } }, { "model": "game_database.genre", - "pk": 67, + "pk": 18, "fields": { - "name": "Text Adventure" + "name": "Dual-Joystick Shooter", + "db_id": "31" } }, { "model": "game_database.game", - "pk": 233, + "pk": 1, "fields": { - "title": "Shadow Warrior", - "db_id": "42610", - "main_time": 8.0, - "extra_time": 15.0, - "completion_time": 21.5, + "title": "8-Bit Armies", + "db_id": "53490", + "main_time": 7.5, + "extra_time": 16.5, + "completion_time": 0.0, "release_date": null, + "description": "8-Bit Armies is a retro styled RTS game from Petroglyph.", + "img_url": "https://www.giantbomb.com/api/image/original/3051471-box_8ba.png", "update": false, "genres": [ - 45 + 1, + 2 ] } }, { "model": "game_database.game", - "pk": 234, + "pk": 2, "fields": { - "title": "Thief", - "db_id": "26400", - "main_time": 21.0, - "extra_time": 26.0, - "completion_time": 36.0, + "title": "Acceleration Of SUGURI 2", + "db_id": "37241", + "main_time": 52.0, + "extra_time": 4.5, + "completion_time": 11.0, "release_date": null, + "description": "A shooter based fighting game. Doujin PC title developed by Orange_Juice.", + "img_url": "https://www.giantbomb.com/api/image/original/2104778-aos2logo.jpg", "update": false, "genres": [ - 46 + 3, + 4 ] } }, { "model": "game_database.game", - "pk": 235, + "pk": 3, "fields": { - "title": "DmC Devil May Cry", - "db_id": "32686", - "main_time": 9.0, - "extra_time": 11.5, - "completion_time": 39.5, + "title": "Amnesia: The Dark Descent", + "db_id": "30087", + "main_time": 8.0, + "extra_time": 9.0, + "completion_time": 10.5, "release_date": null, + "description": "A first-person survival horror game with advanced physics-based puzzles from Frictional Games, the creators of the Penumbra series. Its dynamic of light and darkness and focus on avoidance of enemies rather than combat have been highly influential in recent horror games.", + "img_url": "https://www.giantbomb.com/api/image/original/2299522-amnesia.png", "update": false, "genres": [ - 46 + 5, + 6 ] } }, { "model": "game_database.game", - "pk": 236, + "pk": 4, "fields": { - "title": "Doom", - "db_id": "20654", - "main_time": 11.0, - "extra_time": 13.0, - "completion_time": 15.5, + "title": "Aragami", + "db_id": "54143", + "main_time": 6.5, + "extra_time": 10.0, + "completion_time": 19.5, "release_date": null, + "description": "A stealth action game featuring an assassin who has control over shadows.", + "img_url": "https://www.giantbomb.com/api/image/original/3029647-box_ara.png", "update": false, "genres": [ - 45 + 7 ] } }, { "model": "game_database.game", - "pk": 237, + "pk": 5, "fields": { - "title": "Assassin's Creed IV: Black Flag", - "db_id": "41518", - "main_time": 22.5, - "extra_time": 40.5, - "completion_time": 57.5, + "title": "Assassin's Creed Chronicles: China", + "db_id": "49318", + "main_time": 6.0, + "extra_time": 9.5, + "completion_time": 17.0, "release_date": null, + "description": "A 2.5D downloadable title for the Xbox One, PlayStation 4 and PC. The game follows Shao Jun, the last remaining Assassin of the Chinese Brotherhood.", + "img_url": "https://www.giantbomb.com/api/image/original/2739447-assassins-creed-unity-china-chronicles-1.jpg", "update": false, "genres": [ - 46, - 47 + 8, + 9 ] } }, { "model": "game_database.game", - "pk": 238, + "pk": 6, "fields": { - "title": "Portal", - "db_id": "21170", - "main_time": 3.0, - "extra_time": 5.0, - "completion_time": 9.5, + "title": "Batman: Arkham Knight", + "db_id": "45577", + "main_time": 16.0, + "extra_time": 29.0, + "completion_time": 46.5, "release_date": null, + "description": "Arkham Knight, developer Rocksteady's return to the Batman series, takes place one year after Arkham City. It promises to expand the open world from the previous game, allowing players to drive the Batmobile through Gotham City's streets.", + "img_url": "https://www.giantbomb.com/api/image/original/2606852-keyfull%209237457203.jpg", "update": false, "genres": [ - 47, - 48 + 9 ] } }, { "model": "game_database.game", - "pk": 239, + "pk": 7, "fields": { - "title": "Portal 2", - "db_id": "21662", - "main_time": 8.5, - "extra_time": 13.5, - "completion_time": 19.5, + "title": "Battlevoid: Harbinger", + "db_id": "62671", + "main_time": 0.0, + "extra_time": 0.0, + "completion_time": 0.0, "release_date": null, + "description": "Battlevoid: Harbinger is an epic space adventure RTS developed by Bugbyte Ltd.", + "img_url": "https://www.giantbomb.com/api/image/original/2975952-maincapsule616x353%20%28version2%29.jpg", "update": false, "genres": [ - 45, - 48 + 1 ] } }, { "model": "game_database.game", - "pk": 240, + "pk": 8, "fields": { - "title": "The Elder Scrolls V: Skyrim", - "db_id": "33394", - "main_time": 33.0, - "extra_time": 107.0, - "completion_time": 220.0, + "title": "Bayonetta", + "db_id": "20710", + "main_time": 11.0, + "extra_time": 15.5, + "completion_time": 43.0, "release_date": null, + "description": "Bayonetta is a \"stylish action game\" from PlatinumGames. The titular character is a witch who can use hair-based magic, as well as firearms attached to her feet, to battle fallen angels and other foes.", + "img_url": "https://www.giantbomb.com/api/image/original/1124551-gb.png", "update": false, "genres": [ - 49 + 7 ] } }, { "model": "game_database.game", - "pk": 241, + "pk": 9, "fields": { - "title": "Sniper Elite V2", - "db_id": "34715", + "title": "Bear With Me", + "db_id": "54995", "main_time": 7.0, - "extra_time": 12.5, - "completion_time": 28.5, + "extra_time": 7.5, + "completion_time": 10.0, "release_date": null, + "description": "Bear With Me is an episodic adventure game with a noir inspired theme. It was developed by Exordium Games.", + "img_url": "https://www.giantbomb.com/api/image/original/2876102-bearwithme.jpg", "update": false, "genres": [ - 50, - 51, - 52 + 5 ] } }, { "model": "game_database.game", - "pk": 242, + "pk": 10, "fields": { - "title": "Half-Life 2", - "db_id": "1539", - "main_time": 13.0, - "extra_time": 15.5, - "completion_time": 19.0, + "title": "Beholder", + "db_id": "55285", + "main_time": 5.5, + "extra_time": 9.0, + "completion_time": 20.5, "release_date": null, + "description": "Beholder is a totalitarian themed spying game.", + "img_url": "https://www.giantbomb.com/api/image/original/2894334-header.jpg", "update": false, "genres": [ - 45 + 1, + 10 ] } }, { "model": "game_database.game", - "pk": 243, + "pk": 11, "fields": { - "title": "Brothers: A Tale of Two Sons", - "db_id": "39854", - "main_time": 3.0, - "extra_time": 3.5, - "completion_time": 4.0, + "title": "Homeworld Remastered Collection", + "db_id": "48984", + "main_time": 24.0, + "extra_time": 0.0, + "completion_time": 1.0, "release_date": null, + "description": "A collection of the originals and remakes of Homeworld 1 and 2. Improvements include better textures, models, access to higher resolutions and redone cutscenes.", + "img_url": "https://www.giantbomb.com/api/image/original/2730473-untitled.png", "update": false, "genres": [ - 48, - 53 + 2 ] } }, { "model": "game_database.game", - "pk": 244, + "pk": 12, "fields": { - "title": "Gunpoint", - "db_id": "36961", - "main_time": 3.0, - "extra_time": 4.0, - "completion_time": 6.5, + "title": "Door Kickers", + "db_id": "42792", + "main_time": 5.5, + "extra_time": 15.5, + "completion_time": 41.0, "release_date": null, + "description": "Door Kickers is a top-down real-time SWAT tactics game.", + "img_url": "https://www.giantbomb.com/api/image/original/2695093-doorkickers.png", "update": false, "genres": [ - 48, - 50, - 53 + 1 ] } }, { "model": "game_database.game", - "pk": 245, + "pk": 13, "fields": { - "title": "Half-Life 2: Episode One", - "db_id": "14328", - "main_time": 4.0, - "extra_time": 4.0, - "completion_time": 5.0, + "title": "Downwell", + "db_id": "48935", + "main_time": 7.5, + "extra_time": 12.0, + "completion_time": 14.5, "release_date": null, + "description": "A vertical-scrolling action roguelike that is heavily inspired by Spelunky.", + "img_url": "https://www.giantbomb.com/api/image/original/3118812-box_dw.png", "update": false, "genres": [ - 45, - 46 + 8, + 11 ] } }, { "model": "game_database.game", - "pk": 246, + "pk": 14, "fields": { - "title": "SteamWorld Dig", - "db_id": "43416", - "main_time": 5.0, - "extra_time": 6.5, - "completion_time": 8.0, + "title": "TIS-100", + "db_id": "49901", + "main_time": 15.5, + "extra_time": 35.5, + "completion_time": 49.5, "release_date": null, + "description": "TIS-100 is a programming puzzle game developed by Zachtronics.", + "img_url": "https://www.giantbomb.com/api/image/original/2756477-0812024717-heade.jpg", "update": false, "genres": [ - 46, - 47 + 6, + 10 ] } }, { "model": "game_database.game", - "pk": 247, + "pk": 15, "fields": { - "title": "Rogue Legacy", - "db_id": "42828", - "main_time": 16.5, - "extra_time": 25.5, - "completion_time": 38.0, + "title": "Volgarr the Viking", + "db_id": "42298", + "main_time": 9.5, + "extra_time": 14.0, + "completion_time": 21.5, "release_date": null, + "description": "A tough-as-nails, retro-styled action game published by Adult Swim.", + "img_url": "https://www.giantbomb.com/api/image/original/2701435-box_volgarr.png", "update": false, "genres": [ - 46, - 47, - 49 + 7, + 8 ] } }, { "model": "game_database.game", - "pk": 248, + "pk": 16, "fields": { - "title": "Super Meat Boy", - "db_id": "25114", - "main_time": 10.0, - "extra_time": 17.5, - "completion_time": 46.5, + "title": "Nuclear Throne", + "db_id": "41999", + "main_time": 17.0, + "extra_time": 62.5, + "completion_time": 180.0, "release_date": null, + "description": "A procedurally generated roguelike action game developed by Vlambeer. After creating a prototype called Wasteland Kings for Mojam 2, Vlambeer took the prototype and renamed it Nuclear Throne.", + "img_url": "https://www.giantbomb.com/api/image/original/2803716-newart.png", "update": false, "genres": [ - 47 + 4, + 7 ] } }, { "model": "game_database.game", - "pk": 249, + "pk": 17, "fields": { - "title": "The Bridge", - "db_id": "39011", - "main_time": 4.0, - "extra_time": 5.5, - "completion_time": 7.5, + "title": "Darkest Dungeon", + "db_id": "44203", + "main_time": 55.0, + "extra_time": 79.5, + "completion_time": 104.0, "release_date": null, + "description": "A dungeon crawler that seeks to weigh the psychological effects of delving into hellish monster abodes, not just the damage to HP. Team chemistry means more than just skill synergy.", + "img_url": "https://www.giantbomb.com/api/image/original/2908406-4612953331-hMFSG.jpg", "update": false, "genres": [ - 47, - 48 + 12 ] } }, { "model": "game_database.game", - "pk": 250, + "pk": 18, "fields": { - "title": "Wolfenstein: The New Order", - "db_id": "42581", - "main_time": 11.5, - "extra_time": 15.5, - "completion_time": 24.5, + "title": "Wolfenstein 3D", + "db_id": "7694", + "main_time": 7.0, + "extra_time": 10.0, + "completion_time": 10.5, "release_date": null, + "description": "Considered by many to be the progenitor of the first-person shooter genre, Wolfenstein 3D is a 1992 first-person action game that pits the player, as Allied spy William \"B.J.\" Blazkowicz, against the might of Nazi Germany.", + "img_url": "https://www.giantbomb.com/api/image/original/2220255-wolf3d_dos.png", "update": false, "genres": [ - 45 + 7, + 13 ] } }, { "model": "game_database.game", - "pk": 251, + "pk": 19, "fields": { - "title": "The Vanishing of Ethan Carter", - "db_id": "41506", - "main_time": 4.0, - "extra_time": 4.5, - "completion_time": 4.5, + "title": "Tooth and Tail", + "db_id": "52522", + "main_time": 9.0, + "extra_time": 10.0, + "completion_time": 11.0, "release_date": null, + "description": "Tooth and Tail is an \"Arcade RTS\" by Pocketwatch Games, the creators of Monaco: What's yours is Mine.", + "img_url": "https://www.giantbomb.com/api/image/original/2820867-logo.png", "update": false, "genres": [ - 53 + 1, + 2 ] } }, { "model": "game_database.game", - "pk": 252, + "pk": 20, "fields": { - "title": "Bastion", - "db_id": "32085", - "main_time": 6.5, - "extra_time": 9.0, - "completion_time": 20.0, + "title": "Flinthook", + "db_id": "53249", + "main_time": 19.5, + "extra_time": 35.0, + "completion_time": 53.0, "release_date": null, + "description": "Flinthook is a roguelite, grappling hook platformer from Tribute Games.", + "img_url": "https://www.giantbomb.com/api/image/original/2991332-box_fh.png", "update": false, "genres": [ - 49, - 50 + 8 ] } }, { "model": "game_database.game", - "pk": 253, + "pk": 21, "fields": { - "title": "Supreme Commander 2", - "db_id": "24445", - "main_time": 13.5, - "extra_time": 23.0, - "completion_time": 46.5, + "title": "The Stanley Parable", + "db_id": "43344", + "main_time": 27.0, + "extra_time": 44.0, + "completion_time": 44.0, "release_date": null, + "description": "The Stanley Parable is an abstract, psychological, dark and humorous meta-narrative that attempts to make its choices void, journey paradoxical and generate discussion about storytelling in video games.", + "img_url": "https://www.giantbomb.com/api/image/original/2853861-4714912512-heade.jpg", "update": false, "genres": [ - 54 + 5 ] } }, { "model": "game_database.game", - "pk": 254, + "pk": 22, "fields": { - "title": "Deus Ex: Human Revolution", - "db_id": "21358", - "main_time": 21.5, - "extra_time": 29.5, - "completion_time": 43.0, + "title": "Thomas Was Alone", + "db_id": "38825", + "main_time": 3.5, + "extra_time": 3.5, + "completion_time": 4.0, "release_date": null, + "description": "An indie minimalist puzzle platformer.", + "img_url": "https://www.giantbomb.com/api/image/original/2725629-image-2.jpg", "update": false, "genres": [ - 45, - 49 + 6, + 8 ] } }, { "model": "game_database.game", - "pk": 255, + "pk": 23, "fields": { - "title": "Hitman: Absolution", - "db_id": "26417", - "main_time": 12.5, - "extra_time": 20.0, - "completion_time": 34.0, + "title": "Br\u00fctal Legend", + "db_id": "20700", + "main_time": 9.0, + "extra_time": 13.5, + "completion_time": 24.5, "release_date": null, + "description": "Br\u00fctal Legend is a humorous heavy-metal, open-world, action-adventure game with light real-time strategy elements. As Eddie Riggs, lead the people of the Br\u00fctal World to rise up against the Tainted Coil demons who rule the world, and their leader, the sinister Emperor Doviculus.", + "img_url": "https://www.giantbomb.com/api/image/original/2085660-box_blegend.png", "update": false, "genres": [ - 46 + 2, + 9 ] } }, { "model": "game_database.game", - "pk": 256, + "pk": 24, "fields": { - "title": "Freedom Planet", - "db_id": "39276", - "main_time": 4.5, - "extra_time": 8.0, - "completion_time": 19.0, + "title": "Trine 3: The Artifacts of Power", + "db_id": "47872", + "main_time": 5.0, + "extra_time": 6.0, + "completion_time": 7.0, "release_date": null, + "description": "Trine 3: Artifacts of Power is the sequel to the sequel to Trine. Partially funded by the EU. This entry will for the first time blend 3D segments with the established 2D gameplay.", + "img_url": "https://www.giantbomb.com/api/image/original/3117646-image.jpeg", "update": false, "genres": [ - 47, - 50 + 7, + 8 ] } }, { "model": "game_database.game", - "pk": 257, + "pk": 25, "fields": { - "title": "Monaco: What's Yours Is Mine", - "db_id": "30093", - "main_time": 8.0, - "extra_time": 16.5, - "completion_time": 34.0, + "title": "Metal Gear Solid V: The Phantom Pain", + "db_id": "40796", + "main_time": 45.5, + "extra_time": 82.0, + "completion_time": 162.0, "release_date": null, + "description": "The final main entry in the Metal Gear Solid series bridges the events between Metal Gear Solid: Peace Walker and the original Metal Gear, as Big Boss wakes up from a nine-year coma in 1984 to rebuild his mercenary paradise.", + "img_url": "https://www.giantbomb.com/api/image/original/2731604-mgsvclean.jpg", "update": false, "genres": [ - 50, - 55 + 4, + 9 ] } }, { "model": "game_database.game", - "pk": 258, + "pk": 26, "fields": { - "title": "Spec Ops: The Line", - "db_id": "29445", - "main_time": 6.0, - "extra_time": 7.5, - "completion_time": 15.5, + "title": "Psychonauts", + "db_id": "2906", + "main_time": 12.5, + "extra_time": 15.5, + "completion_time": 22.0, "release_date": null, + "description": "Developed by Double Fine Productions, Psychonauts is a platforming action-adventure game in which players take on the role of Razputin, a young psychic out to thwart an evil plot to subvert the minds of other powerful psychics.", + "img_url": "https://www.giantbomb.com/api/image/original/1841447-box_pnauts.png", "update": false, "genres": [ - 52 + 8, + 9 ] } }, { "model": "game_database.game", - "pk": 259, + "pk": 27, "fields": { - "title": "Alien: Isolation", - "db_id": "44296", - "main_time": 18.5, - "extra_time": 23.5, - "completion_time": 32.5, + "title": "Batman: Arkham City", + "db_id": "29443", + "main_time": 12.5, + "extra_time": 21.5, + "completion_time": 46.5, "release_date": null, + "description": "When Gotham City's slums have been transformed into a secluded super-prison, it's up to Batman to uncover its conspiracy in the sequel to 2009's Batman: Arkham Asylum.", + "img_url": "https://www.giantbomb.com/api/image/original/2606170-batmanaccleanbox.jpg", "update": false, "genres": [ - 46 + 9 ] } }, { "model": "game_database.game", - "pk": 260, + "pk": 28, "fields": { - "title": "Papers, Please", - "db_id": "41931", - "main_time": 4.5, - "extra_time": 8.0, - "completion_time": 16.0, + "title": "Hand of Fate", + "db_id": "43290", + "main_time": 10.5, + "extra_time": 19.5, + "completion_time": 40.5, "release_date": null, + "description": "A tarot card driven roguelike action role playing game, by Defiant Development from Brisbane, Australia.", + "img_url": "https://www.giantbomb.com/api/image/original/3008935-box_hof.png", "update": false, "genres": [ - 48, - 53 + 1, + 5, + 9, + 12, + 14, + 15 ] } }, { "model": "game_database.game", - "pk": 261, + "pk": 29, "fields": { - "title": "Hotline Miami", - "db_id": "39452", - "main_time": 5.0, - "extra_time": 7.0, - "completion_time": 14.5, + "title": "Metal Gear Rising: Revengeance", + "db_id": "26801", + "main_time": 7.0, + "extra_time": 11.0, + "completion_time": 31.5, "release_date": null, + "description": "A fast-paced action game co-developed by PlatinumGames and Kojima Productions. It follows ninja-cyborg Raiden's activities four years after the events of Metal Gear Solid 4: Guns of the Patriots.", + "img_url": "https://www.giantbomb.com/api/image/original/2581091-91yrrxqis9l._sl1500_.jpg", "update": false, "genres": [ - 50 + 7, + 9 ] } }, { "model": "game_database.game", - "pk": 262, + "pk": 30, "fields": { - "title": "Tomb Raider", - "db_id": "27312", - "main_time": 15.5, - "extra_time": 17.5, - "completion_time": 18.5, + "title": "Grand Theft Auto V", + "db_id": "36765", + "main_time": 31.5, + "extra_time": 47.0, + "completion_time": 79.5, "release_date": null, + "description": "Rockstar returns to the fictional state of San Andreas with a crew of three criminal protagonists who work together to pull off high-profile heists.", + "img_url": "https://www.giantbomb.com/api/image/original/2463980-grand%20theft%20auto%20v.jpg", "update": false, "genres": [ - 46, - 47 + 9, + 16 ] } }, { "model": "game_database.game", - "pk": 263, + "pk": 31, "fields": { - "title": "Grow Home", - "db_id": "48631", - "main_time": 2.5, - "extra_time": 4.5, - "completion_time": 7.5, + "title": "Doom", + "db_id": "20654", + "main_time": 11.0, + "extra_time": 12.5, + "completion_time": 15.5, "release_date": null, + "description": "In a world with health regeneration and cover-based systems, one of the longest-running first-person shooter series returns to its brutal, fast-paced roots.", + "img_url": "https://www.giantbomb.com/api/image/original/2849529-doom.jpg", "update": false, "genres": [ - 47 + 13 ] } }, { "model": "game_database.game", - "pk": 264, + "pk": 32, "fields": { - "title": "Darksiders", - "db_id": "20991", - "main_time": 17.0, - "extra_time": 20.0, - "completion_time": 27.0, + "title": "Duet", + "db_id": "44352", + "main_time": 2.5, + "extra_time": 6.0, + "completion_time": 11.0, "release_date": null, + "description": "Duet is a mobile action game with a soundtrack by Melbourne composer and Gotye multi-instrumentalist, Tim Shiel.", + "img_url": "https://www.giantbomb.com/api/image/original/2564607-1255314345-mzl.b.png", "update": false, - "genres": [ - 46, - 50 - ] + "genres": [] } }, { "model": "game_database.game", - "pk": 265, + "pk": 33, "fields": { - "title": "Mark of the Ninja", - "db_id": "37615", - "main_time": 8.0, - "extra_time": 12.0, - "completion_time": 19.5, + "title": "Titan Souls", + "db_id": "46622", + "main_time": 3.0, + "extra_time": 4.0, + "completion_time": 6.5, "release_date": null, + "description": "Titan Souls is a top down action game where you play as a hero trying to defeat large and powerful monsters.", + "img_url": "https://www.giantbomb.com/api/image/original/2653523-6787669712-14510.jpg", "update": false, "genres": [ - 47, - 50 + 7 ] } }, { "model": "game_database.game", - "pk": 266, + "pk": 34, "fields": { - "title": "Darksiders II", - "db_id": "29941", - "main_time": 21.5, - "extra_time": 28.5, - "completion_time": 43.5, + "title": "Giana Sisters: Twisted Dreams", + "db_id": "39484", + "main_time": 7.5, + "extra_time": 13.0, + "completion_time": 21.0, "release_date": null, + "description": "The third entry in the Super Mario Bros inspired platformer series.", + "img_url": "https://www.giantbomb.com/api/image/original/2478661-box_gstd.png", "update": false, "genres": [ - 46, - 49, - 50 + 8 ] } }, { "model": "game_database.game", - "pk": 267, + "pk": 35, "fields": { - "title": "XCOM: Enemy Unknown", - "db_id": "37152", - "main_time": 26.0, - "extra_time": 35.5, - "completion_time": 56.0, + "title": "Outlast", + "db_id": "40089", + "main_time": 5.0, + "extra_time": 6.5, + "completion_time": 9.5, "release_date": null, + "description": "Deep within the abandoned halls of Mount Massive Asylum, amateur journalist Miles Upshur sets out to find a good story, and instead finds an evil presence.", + "img_url": "https://www.giantbomb.com/api/image/original/2958612-box_outlast.png", "update": false, "genres": [ - 55 + 5 ] } }, { "model": "game_database.game", - "pk": 268, + "pk": 36, "fields": { - "title": "One Finger Death Punch", - "db_id": "43019", - "main_time": 6.5, - "extra_time": 10.5, - "completion_time": 17.0, + "title": "The Banner Saga", + "db_id": "37629", + "main_time": 10.5, + "extra_time": 13.5, + "completion_time": 26.0, "release_date": null, + "description": "The Sun has stopped in the middle of the sky, the Gods have died and human settlements are being invaded by the Dredge, a race of stone beings. There can be no doubt about it, the world is coming to an end. In this turn-based tactics game, borrowing elements from Norse myth, your clan's continued survival is the only thing that truly matters. Will its banner be stomped into the the ground or fly high and bring back hope to those who have lost it in this desolate cold world?", + "img_url": "https://www.giantbomb.com/api/image/original/3007517-box_tbs.png", "update": false, "genres": [ - 50, - 56, - 57 + 1, + 12 ] } }, { "model": "game_database.game", - "pk": 269, + "pk": 37, "fields": { - "title": "Transistor", - "db_id": "42012", - "main_time": 6.0, - "extra_time": 8.5, - "completion_time": 15.5, + "title": "6180 the moon", + "db_id": "42186", + "main_time": 1.5, + "extra_time": 2.0, + "completion_time": 2.0, "release_date": null, + "description": "6180 the moon is a puzzle-platformer in which players control the Moon as it sets off to find the missing Sun.", + "img_url": "https://www.giantbomb.com/api/image/original/2466112-9616184041-boxsh.png", "update": false, "genres": [ - 49, - 50, - 55 + 8 ] } }, { "model": "game_database.game", - "pk": 270, + "pk": 38, "fields": { - "title": "Assassin's Creed: Revelations", - "db_id": "34975", - "main_time": 12.5, - "extra_time": 21.0, - "completion_time": 35.0, + "title": "Luftrausers", + "db_id": "39474", + "main_time": 4.0, + "extra_time": 6.0, + "completion_time": 17.0, "release_date": null, + "description": "From the makers of Super Crate Box comes the only game to allow players to create, customize, and fly their own luftrausers.", + "img_url": "https://www.giantbomb.com/api/image/original/2859664-1501548940-heade.jpg", "update": false, "genres": [ - 46 + 11 ] } }, { "model": "game_database.game", - "pk": 271, + "pk": 39, "fields": { - "title": "Never Alone", - "db_id": "46277", - "main_time": 3.0, - "extra_time": 3.5, - "completion_time": 4.0, + "title": "Race the Sun", + "db_id": "42239", + "main_time": 6.0, + "extra_time": 0.0, + "completion_time": 0.0, "release_date": null, + "description": "Race the Sun puts players in a solar-powered aircraft that must avoid obstacles at increasing speeds in an attempt to stay airborne as long as possible in a race against the setting sun. Supports the Oculus Rift for PC.", + "img_url": "https://www.giantbomb.com/api/image/original/2991334-box_rts.png", "update": false, "genres": [ - 47, - 48, - 58 + 7, + 16 ] } }, { "model": "game_database.game", - "pk": 272, + "pk": 40, "fields": { - "title": "Hotline Miami 2: Wrong Number", - "db_id": "40888", - "main_time": 9.0, - "extra_time": 12.5, - "completion_time": 29.0, + "title": "Planetbase", + "db_id": "51197", + "main_time": 6.5, + "extra_time": 18.5, + "completion_time": 0.0, "release_date": null, + "description": "Planetbase is a strategy game where players guide a group of space settlers trying to establish an outpost on a remote planet.", + "img_url": "https://www.giantbomb.com/api/image/original/2991337-box_pb.png", "update": false, "genres": [ - 50 + 1, + 10 ] } }, { "model": "game_database.game", - "pk": 273, + "pk": 41, "fields": { - "title": "Grey Goo", - "db_id": "45727", - "main_time": 15.0, - "extra_time": 15.5, - "completion_time": 17.0, + "title": "Prison Architect", + "db_id": "36763", + "main_time": 15.5, + "extra_time": 28.5, + "completion_time": 55.0, "release_date": null, + "description": "The latest game announced by acclaimed indie developer, Introversion Software, in which players build and manage the day-to-day operations of a maximum security prison.", + "img_url": "https://www.giantbomb.com/api/image/original/2005326-prisonarch_logo.jpg", "update": false, "genres": [ - 54 + 1, + 10 ] } }, { "model": "game_database.game", - "pk": 274, + "pk": 42, "fields": { - "title": "Sleeping Dogs", - "db_id": "29441", - "main_time": 15.5, - "extra_time": 22.0, - "completion_time": 34.0, + "title": "ArmA III", + "db_id": "35383", + "main_time": 20.0, + "extra_time": 44.5, + "completion_time": 86.0, "release_date": null, + "description": "Arma 3 is the third core game in the simulation and modern combat Arma franchise developed by Bohemia Interactive.", + "img_url": "https://www.giantbomb.com/api/image/original/2569992-4939205824-Arma3.jpg", "update": false, "genres": [ - 46, - 52 + 10, + 13 ] } }, { "model": "game_database.game", - "pk": 275, + "pk": 43, "fields": { - "title": "Life Is Strange", - "db_id": "47342", - "main_time": 14.0, - "extra_time": 16.0, - "completion_time": 18.0, + "title": "Ashes of the Singularity", + "db_id": "49088", + "main_time": 11.0, + "extra_time": 0.0, + "completion_time": 0.0, "release_date": null, + "description": "A new real-time strategy game from Stardock. The player commands on a massive scale with large amounts of units on the screen.", + "img_url": "https://www.giantbomb.com/api/image/original/2899842-f3e059_ashesofthesingularity.jpg", "update": false, "genres": [ - 53 + 2 ] } }, { "model": "game_database.game", - "pk": 276, + "pk": 44, "fields": { - "title": "Limbo", - "db_id": "30380", - "main_time": 3.5, - "extra_time": 4.0, - "completion_time": 6.5, + "title": "Assassin's Creed: Rogue", + "db_id": "47291", + "main_time": 10.5, + "extra_time": 21.5, + "completion_time": 38.0, "release_date": null, + "description": "Assassin's Creed: Rogue takes place during the Seven Years' War in and around the American colonies. The protagonist, Shay Patrick Cormac, is an Assassin-turned-Templar who is hunting his former Brothers in the region.", + "img_url": "https://www.giantbomb.com/api/image/original/2667100-10575388_878538075492285_1649926027762407539_o.jpg", "update": false, "genres": [ - 47, - 48 + 9 ] } }, { "model": "game_database.game", - "pk": 277, + "pk": 45, "fields": { - "title": "Dust: An Elysian Tail", - "db_id": "27691", - "main_time": 10.0, - "extra_time": 13.0, - "completion_time": 18.0, + "title": "Batman: Arkham Origins", + "db_id": "42245", + "main_time": 12.5, + "extra_time": 22.0, + "completion_time": 37.0, "release_date": null, + "description": "Two years after beginning his crime-fighting career, Batman faces his toughest challenge ever when the crime lord known as Black Mask hires the eight deadliest assassins in the DC Universe to kill the vigilante who has been interfering in his operations.", + "img_url": "https://www.giantbomb.com/api/image/original/2485321-486263.jpg", "update": false, "genres": [ - 49, - 50, - 57 + 9, + 17 ] } }, { "model": "game_database.game", - "pk": 278, + "pk": 46, "fields": { - "title": "Murdered: Soul Suspect", - "db_id": "41524", - "main_time": 6.5, - "extra_time": 8.5, - "completion_time": 11.0, + "title": "FTL: Faster Than Light", + "db_id": "37770", + "main_time": 11.5, + "extra_time": 29.5, + "completion_time": 124.0, "release_date": null, + "description": "In this roguelike space sim, players are tasked with commanding a customized starship on an important mission through a randomized universe, with vile rebels nipping at their heels.", + "img_url": "https://www.giantbomb.com/api/image/original/2326566-ftl_box.jpg", "update": false, "genres": [ - 53 + 1, + 12 ] } }, { "model": "game_database.game", - "pk": 279, + "pk": 47, "fields": { - "title": "Not a Hero", - "db_id": "45802", - "main_time": 5.0, - "extra_time": 5.5, - "completion_time": 10.0, + "title": "Xenon Valkyrie", + "db_id": "58180", + "main_time": 0.0, + "extra_time": 12.0, + "completion_time": 0.0, "release_date": null, + "description": "Xenon Valkyrie is a rogue-like side-scrolling action-adventure game for Windows, Mac, and Linux developed by Diabolical Mind.", + "img_url": "https://www.giantbomb.com/api/image/original/2918245-7308933481-", "update": false, - "genres": [ - 50, - 52 - ] + "genres": [] } }, { "model": "game_database.game", - "pk": 280, + "pk": 48, "fields": { - "title": "Metal Gear Solid V: Ground Zeroes", - "db_id": "39575", - "main_time": 1.5, - "extra_time": 6.5, - "completion_time": 20.5, + "title": "Kingdom", + "db_id": "47635", + "main_time": 8.5, + "extra_time": 18.0, + "completion_time": 36.5, "release_date": null, + "description": "A very minimal strategy game that encourages players to stop and enjoy the scenery.", + "img_url": "https://www.giantbomb.com/api/image/original/2784516-14369-b.png", "update": false, "genres": [ - 50, - 52 + 1, + 5, + 10 ] } }, { "model": "game_database.game", - "pk": 281, + "pk": 49, "fields": { - "title": "The Stanley Parable", - "db_id": "43344", - "main_time": 27.0, - "extra_time": 44.0, - "completion_time": 44.0, + "title": "Viscera Cleanup Detail: Shadow Warrior", + "db_id": "44694", + "main_time": 1.5, + "extra_time": 2.0, + "completion_time": 2.0, "release_date": null, + "description": "A cleaning simulator by RuneStorm that is set in the Shadow Warrior universe.", + "img_url": "https://www.giantbomb.com/api/image/original/3140511-box_vcdsw.png", "update": false, "genres": [ - 53 + 7, + 10 ] } }, { "model": "game_database.game", - "pk": 282, + "pk": 50, "fields": { - "title": "Thomas Was Alone", - "db_id": "38825", - "main_time": 3.5, - "extra_time": 3.5, - "completion_time": 4.0, + "title": "Galak-Z", + "db_id": "42925", + "main_time": 9.0, + "extra_time": 14.0, + "completion_time": 0.0, "release_date": null, + "description": "Galak-Z is a sci-fi roguelike space shooter inspired by anime of the 1970s and '80s.", + "img_url": "https://www.giantbomb.com/api/image/original/2496428-gz.jpg", "update": false, "genres": [ - 47, - 48 + 11 ] } }, { "model": "game_database.game", - "pk": 283, + "pk": 51, "fields": { - "title": "Br\u00fctal Legend", - "db_id": "20700", - "main_time": 9.0, - "extra_time": 13.5, - "completion_time": 24.5, + "title": "Serious Sam: The First Encounter", + "db_id": "27152", + "main_time": 6.0, + "extra_time": 7.5, + "completion_time": 10.5, "release_date": null, + "description": "A first-person shooter where players shoot hordes of relentless monsters while trying to save Earth from Mental and his forces.", + "img_url": "https://www.giantbomb.com/api/image/original/1824062-box_ssamfe.jpg", "update": false, "genres": [ - 46, - 54 + 7, + 13 ] } }, { "model": "game_database.game", - "pk": 284, + "pk": 52, "fields": { - "title": "Trine 3: The Artifacts of Power", - "db_id": "47872", - "main_time": 5.0, - "extra_time": 5.5, - "completion_time": 7.0, + "title": "The Wolf Among Us", + "db_id": "34213", + "main_time": 9.0, + "extra_time": 0.0, + "completion_time": 0.0, "release_date": null, + "description": "A prequel to the Fables comic book series, The Wolf Among Us tells a tale of the reformed Big Bad Wolf of childhood folklore (who is the sheriff of a secluded community of fables in 20th century New York City) as he investigates a series of grisly murders.", + "img_url": "https://www.giantbomb.com/api/image/original/3039239-box_twauttgs.png", "update": false, "genres": [ - 47, - 50 + 5 ] } }, { "model": "game_database.game", - "pk": 285, + "pk": 53, "fields": { - "title": "Metal Gear Solid V: The Phantom Pain", - "db_id": "40796", - "main_time": 45.5, - "extra_time": 82.0, - "completion_time": 163.0, + "title": "That Dragon, Cancer", + "db_id": "43546", + "main_time": 2.0, + "extra_time": 2.0, + "completion_time": 2.0, "release_date": null, + "description": "An adventure game focusing on a true story about raising a son who has terminal cancer.", + "img_url": "https://www.giantbomb.com/api/image/original/2814311-0694125108-capsu.jpg", "update": false, "genres": [ - 46, - 52 + 5 ] } }, { "model": "game_database.game", - "pk": 286, + "pk": 54, "fields": { - "title": "Psychonauts", - "db_id": "2906", - "main_time": 12.5, - "extra_time": 15.5, - "completion_time": 22.5, + "title": "Master of Orion", + "db_id": "49906", + "main_time": 30.0, + "extra_time": 0.0, + "completion_time": 0.0, "release_date": null, + "description": "A reboot of the space-faring 4X franchise, Master of Orion. It is being developed by NGD studios and published by World of Tanks' creators, Wargaming.", + "img_url": "https://www.giantbomb.com/api/image/original/2763901-6576315634-capsu.jpg", "update": false, "genres": [ - 46, - 47 + 1 ] } }, { "model": "game_database.game", - "pk": 287, + "pk": 55, "fields": { - "title": "Batman: Arkham City", - "db_id": "29443", - "main_time": 12.5, - "extra_time": 21.5, - "completion_time": 47.0, + "title": "Enter the Gungeon", + "db_id": "48332", + "main_time": 16.5, + "extra_time": 43.5, + "completion_time": 149.0, "release_date": null, + "description": "Four unlikely heroes must fight through a fortress inhabited by large sentient bullets (among other gun-related creatures) seeking a legendary weapon in this gun-themed rogue-like \"bullet hell\" shooter.", + "img_url": "https://www.giantbomb.com/api/image/original/2948220-box_etg.png", "update": false, "genres": [ - 46 + 4, + 9, + 12 ] } }, { "model": "game_database.game", - "pk": 288, + "pk": 56, "fields": { - "title": "Hand of Fate", - "db_id": "43290", - "main_time": 10.5, - "extra_time": 19.5, - "completion_time": 38.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 49, - 53, - 55, - 59, - 60 - ] - } -}, -{ - "model": "game_database.game", - "pk": 289, - "fields": { - "title": "Metal Gear Rising: Revengeance", - "db_id": "26801", - "main_time": 7.0, - "extra_time": 11.0, - "completion_time": 32.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 290, - "fields": { - "title": "Grand Theft Auto V", - "db_id": "36765", - "main_time": 31.5, - "extra_time": 47.0, - "completion_time": 79.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 61 - ] - } -}, -{ - "model": "game_database.game", - "pk": 291, - "fields": { - "title": "Titan Souls", - "db_id": "46622", - "main_time": 3.0, - "extra_time": 4.0, - "completion_time": 6.5, - "release_date": null, - "update": false, - "genres": [ - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 292, - "fields": { - "title": "Giana Sisters: Twisted Dreams", - "db_id": "39484", - "main_time": 7.5, - "extra_time": 13.0, - "completion_time": 21.5, - "release_date": null, - "update": false, - "genres": [ - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 293, - "fields": { - "title": "Outlast", - "db_id": "40089", - "main_time": 5.0, - "extra_time": 6.5, - "completion_time": 9.5, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 294, - "fields": { - "title": "The Banner Saga", - "db_id": "37629", - "main_time": 10.5, - "extra_time": 13.5, - "completion_time": 26.5, - "release_date": null, - "update": false, - "genres": [ - 49, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 295, - "fields": { - "title": "6180 the moon", - "db_id": "42186", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 296, - "fields": { - "title": "Pony Island", - "db_id": "52035", - "main_time": 2.5, - "extra_time": 3.0, - "completion_time": 4.5, - "release_date": null, - "update": false, - "genres": [ - 48, - 53, - 62 - ] - } -}, -{ - "model": "game_database.game", - "pk": 297, - "fields": { - "title": "Giana Sisters: Twisted Dreams - Rise of the Owlverlord", - "db_id": "44033", - "main_time": 2.0, - "extra_time": 2.0, - "completion_time": 3.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 298, - "fields": { - "title": "Reigns", - "db_id": "54416", - "main_time": 3.5, + "title": "Furi", + "db_id": "52304", + "main_time": 6.0, "extra_time": 7.5, - "completion_time": 16.0, - "release_date": null, - "update": false, - "genres": [ - 49, - 51, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 299, - "fields": { - "title": "Skullgirls", - "db_id": "34082", - "main_time": 3.0, - "extra_time": 13.0, - "completion_time": 50.0, - "release_date": null, - "update": false, - "genres": [ - 56 - ] - } -}, -{ - "model": "game_database.game", - "pk": 300, - "fields": { - "title": "Jotun", - "db_id": "48488", - "main_time": 5.5, - "extra_time": 5.5, - "completion_time": 6.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 301, - "fields": { - "title": "Assassin's Creed III", - "db_id": "37494", - "main_time": 15.5, - "extra_time": 30.5, - "completion_time": 55.0, + "completion_time": 16.5, "release_date": null, + "description": "Furi is an ultra-responsive mix of fast-paced sword fighting and dual-stick shooting. Featuring character designs by Takashi Okazaki, creator of Afro Samurai and a explosive electro soundtrack.", + "img_url": "https://www.giantbomb.com/api/image/original/2993431-box_furi.png", "update": false, "genres": [ - 46 + 7, + 18 ] } }, { "model": "game_database.game", - "pk": 302, + "pk": 57, "fields": { - "title": "Styx: Master of Shadows", - "db_id": "45430", - "main_time": 17.0, - "extra_time": 22.0, - "completion_time": 40.0, + "title": "Owlboy", + "db_id": "23714", + "main_time": 8.0, + "extra_time": 10.0, + "completion_time": 12.5, "release_date": null, + "description": "A 2D platforming action-adventure developed by D-pad Studios for PC.", + "img_url": "https://www.giantbomb.com/api/image/original/3017059-box_ob.png", "update": false, "genres": [ - 49, - 50, - 55 + 8, + 9 ] } }, { "model": "game_database.game", - "pk": 303, + "pk": 58, "fields": { - "title": "Inside My Radio", - "db_id": "46455", - "main_time": 2.0, - "extra_time": 2.5, - "completion_time": 10.5, + "title": "Night in the Woods", + "db_id": "44986", + "main_time": 8.5, + "extra_time": 12.0, + "completion_time": 23.0, "release_date": null, + "description": "A story-focused platforming adventure/exploration game with a striking and colorful art style. Taking place in a small town of anthropomorphic animals, the game revolves around college dropout Mae as she tries to get reacquainted with her hometown.", + "img_url": "https://www.giantbomb.com/api/image/original/2993643-box_nitw.png", "update": false, "genres": [ - 47, - 63 + 5, + 8 ] } }, { "model": "game_database.game", - "pk": 304, + "pk": 59, "fields": { - "title": "The Swapper", - "db_id": "32940", - "main_time": 5.0, - "extra_time": 5.5, - "completion_time": 5.5, + "title": "Hollow Knight", + "db_id": "48412", + "main_time": 24.0, + "extra_time": 36.5, + "completion_time": 51.0, "release_date": null, + "description": "A 2D exploration action adventure game, developed by Team Cherry.", + "img_url": "https://www.giantbomb.com/api/image/original/3138852-box_hk.png", "update": false, "genres": [ - 47, - 48 + 8, + 9 ] } }, { "model": "game_database.game", - "pk": 305, + "pk": 60, "fields": { - "title": "Kholat", - "db_id": "48521", - "main_time": 4.5, - "extra_time": 6.0, - "completion_time": 7.5, + "title": "Euro Truck Simulator 2", + "db_id": "40197", + "main_time": 40.5, + "extra_time": 69.0, + "completion_time": 362.0, "release_date": null, + "description": "Travel across Europe as a trucker delivering cargo in a variety of trucks.", + "img_url": "https://www.giantbomb.com/api/image/original/3140522-box_ets2.png", "update": false, "genres": [ - 53 + 10, + 16 ] } }, { "model": "game_database.game", - "pk": 306, + "pk": 61, "fields": { - "title": "Shelter 2", - "db_id": "45856", - "main_time": 2.0, - "extra_time": 2.5, - "completion_time": 8.0, + "title": "Europa Universalis", + "db_id": "11305", + "main_time": 0.0, + "extra_time": 20.0, + "completion_time": 0.0, "release_date": null, + "description": "Based on a French board game of the same name, Europa Universalis allows players to take control of a civilization between 1492 and 1792", + "img_url": "https://www.giantbomb.com/api/image/original/2331102-box_eu.png", "update": false, "genres": [ - 53 + 1, + 10 ] } }, { "model": "game_database.game", - "pk": 307, + "pk": 62, "fields": { - "title": "Burnout Paradise", - "db_id": "5648", - "main_time": 13.5, - "extra_time": 25.5, - "completion_time": 54.5, + "title": "Farming Simulator 17", + "db_id": "54151", + "main_time": 37.0, + "extra_time": 150.0, + "completion_time": 0.0, "release_date": null, + "description": "The newest game in the Farming Simulator franchise for consoles and the PC.", + "img_url": "https://www.giantbomb.com/api/image/original/3037741-box_fs17.png", "update": false, "genres": [ - 61 + 10 ] } }, { "model": "game_database.game", - "pk": 308, + "pk": 63, "fields": { - "title": "Alan Wake", - "db_id": "20982", - "main_time": 11.0, - "extra_time": 14.5, - "completion_time": 25.5, + "title": "Final Fantasy XV", + "db_id": "21006", + "main_time": 28.0, + "extra_time": 54.0, + "completion_time": 93.0, "release_date": null, + "description": "The fifteenth entry in Square Enix's flagship RPG franchise, set in a world that mixes elements of modern technology with magic, a fantasy based on reality.", + "img_url": "https://www.giantbomb.com/api/image/original/2903750-final%20fantasy%20xv%20v3.jpg", "update": false, "genres": [ - 46, - 52 + 7, + 9, + 12 ] } }, { "model": "game_database.game", - "pk": 309, + "pk": 64, "fields": { - "title": "Rise & Shine", - "db_id": "50037", - "main_time": 2.5, - "extra_time": 2.5, - "completion_time": 3.5, + "title": "Hearts of Iron IV", + "db_id": "45214", + "main_time": 48.5, + "extra_time": 311.0, + "completion_time": 454.0, "release_date": null, + "description": "The next entry in the series of WWII wargames from Paradox Interactive.", + "img_url": "https://www.giantbomb.com/api/image/original/2594042-gaming-hearts-of-iron-4.jpg", "update": false, "genres": [ - 50 + 1 ] } }, { "model": "game_database.game", - "pk": 310, + "pk": 65, "fields": { - "title": "Torchlight II", - "db_id": "32255", - "main_time": 20.5, - "extra_time": 27.0, - "completion_time": 65.5, + "title": "Hitman", + "db_id": "45150", + "main_time": 10.5, + "extra_time": 26.5, + "completion_time": 95.0, "release_date": null, + "description": "The sixth game in IO Interactive's stealth murder franchise, simply titled Hitman, adopts an episodic design which continually introduces new assassination contracts for players to undertake.", + "img_url": "https://www.giantbomb.com/api/image/original/3124186-1671936150-packs.jpg", "update": false, "genres": [ - 49, - 50 + 9 ] } }, { "model": "game_database.game", - "pk": 311, + "pk": 66, "fields": { - "title": "Sniper Elite III", - "db_id": "41928", - "main_time": 9.0, - "extra_time": 15.0, - "completion_time": 37.0, + "title": "Just Cause 3", + "db_id": "48207", + "main_time": 17.0, + "extra_time": 34.0, + "completion_time": 57.0, "release_date": null, + "description": "Battle a dictator's forces in a fictional Mediterranean archipelago in this follow-up to the popular series from Avalanche Studios and Square-Enix.", + "img_url": "https://www.giantbomb.com/api/image/original/2996057-box_jc3.png", "update": false, "genres": [ - 51, - 52 + 7 ] } }, { "model": "game_database.game", - "pk": 312, + "pk": 67, "fields": { - "title": "Just Cause 2", - "db_id": "20742", - "main_time": 17.5, - "extra_time": 34.5, - "completion_time": 86.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 52, - 61, - 64 - ] - } -}, -{ - "model": "game_database.game", - "pk": 313, - "fields": { - "title": "Battlefleet Gothic: Armada", - "db_id": "51019", - "main_time": 19.5, - "extra_time": 20.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 54, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 314, - "fields": { - "title": "Shelter", - "db_id": "42713", - "main_time": 1.5, - "extra_time": 1.5, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 315, - "fields": { - "title": "Small Radios Big Televisions", - "db_id": "48756", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 316, - "fields": { - "title": "Of Orcs and Men", - "db_id": "35668", - "main_time": 12.5, - "extra_time": 14.5, - "completion_time": 21.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 317, - "fields": { - "title": "Slayaway Camp", - "db_id": "56823", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 10.0, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 318, - "fields": { - "title": "Warhammer: End Times - Vermintide", - "db_id": "48755", - "main_time": 8.0, - "extra_time": 33.5, - "completion_time": 150.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 319, - "fields": { - "title": "Strider", - "db_id": "43275", - "main_time": 45.0, - "extra_time": 52.0, - "completion_time": 57.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 320, - "fields": { - "title": "Titanfall 2", - "db_id": "49139", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 13.5, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 321, - "fields": { - "title": "Tattletail", - "db_id": "57512", - "main_time": 1.0, - "extra_time": 1.5, - "completion_time": 2.0, - "release_date": "2016-12-01", - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 322, - "fields": { - "title": "Dead Space", - "db_id": "20800", - "main_time": 11.0, - "extra_time": 13.0, - "completion_time": 20.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 323, - "fields": { - "title": "Sniper: Ghost Warrior 2", - "db_id": "33002", - "main_time": 5.0, - "extra_time": 6.5, - "completion_time": 10.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 324, - "fields": { - "title": "Rock of Ages", - "db_id": "31679", - "main_time": 4.0, - "extra_time": 5.5, + "title": "Life Is Strange: Before the Storm", + "db_id": "59903", + "main_time": 10.0, + "extra_time": 11.0, "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [ - 55, - 61 - ] - } -}, -{ - "model": "game_database.game", - "pk": 325, - "fields": { - "title": "Crimzon Clover", - "db_id": "34001", - "main_time": 53.0, - "extra_time": 3.0, - "completion_time": 8.5, - "release_date": null, - "update": false, - "genres": [ - 62 - ] - } -}, -{ - "model": "game_database.game", - "pk": 326, - "fields": { - "title": "Pinstripe", - "db_id": "53617", - "main_time": 2.5, - "extra_time": 3.5, - "completion_time": 6.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 327, - "fields": { - "title": "Everything", - "db_id": "53662", - "main_time": 3.0, - "extra_time": 6.5, - "completion_time": 18.0, - "release_date": null, - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 328, - "fields": { - "title": "Zombie Army Trilogy", - "db_id": "48522", - "main_time": 14.5, - "extra_time": 19.5, - "completion_time": 28.0, - "release_date": null, - "update": false, - "genres": [ - 52, - 65 - ] - } -}, -{ - "model": "game_database.game", - "pk": 329, - "fields": { - "title": "Braid", - "db_id": "20716", - "main_time": 5.0, - "extra_time": 6.0, - "completion_time": 7.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 330, - "fields": { - "title": "Shantae: Risky's Revenge", - "db_id": "28141", - "main_time": 5.0, - "extra_time": 7.0, - "completion_time": 7.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 331, - "fields": { - "title": "Alan Wake's American Nightmare", - "db_id": "35157", - "main_time": 3.5, - "extra_time": 4.5, - "completion_time": 8.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 332, - "fields": { - "title": "SOMA", - "db_id": "44072", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 333, - "fields": { - "title": "Punch Club", - "db_id": "51004", - "main_time": 9.5, - "extra_time": 13.0, - "completion_time": 20.5, - "release_date": null, - "update": false, - "genres": [ - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 334, - "fields": { - "title": "Grow Up", - "db_id": "54224", - "main_time": 4.0, - "extra_time": 6.0, - "completion_time": 9.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 335, - "fields": { - "title": "Desync", - "db_id": "53556", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 336, - "fields": { - "title": "Destiny 2", - "db_id": "52647", - "main_time": 12.0, - "extra_time": 24.0, - "completion_time": 99.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 337, - "fields": { - "title": "Max Payne", - "db_id": "2414", - "main_time": 8.5, - "extra_time": 9.0, - "completion_time": 11.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 338, - "fields": { - "title": "Space Hulk: Deathwing", - "db_id": "43811", - "main_time": 8.5, - "extra_time": 11.5, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 339, - "fields": { - "title": "Apotheon", - "db_id": "37707", - "main_time": 8.5, - "extra_time": 12.0, - "completion_time": 13.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 340, - "fields": { - "title": "Hexcells", - "db_id": "44623", - "main_time": 2.0, - "extra_time": 2.0, - "completion_time": 2.5, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 341, - "fields": { - "title": "The Talos Principle", - "db_id": "46572", - "main_time": 15.5, - "extra_time": 20.5, - "completion_time": 28.0, - "release_date": null, - "update": false, - "genres": [ - 48, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 342, - "fields": { - "title": "Vanquish", - "db_id": "29903", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 17.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 343, - "fields": { - "title": "Outland", - "db_id": "32552", - "main_time": 7.0, - "extra_time": 9.5, - "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [ - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 344, - "fields": { - "title": "Subnautica", - "db_id": "46006", - "main_time": 26.0, - "extra_time": 43.0, - "completion_time": 56.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 345, - "fields": { - "title": "Lovers in a Dangerous Spacetime", - "db_id": "41122", - "main_time": 5.5, - "extra_time": 7.5, - "completion_time": 13.5, - "release_date": null, - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 346, - "fields": { - "title": "Headlander", - "db_id": "50745", - "main_time": 5.5, - "extra_time": 7.0, - "completion_time": 8.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 347, - "fields": { - "title": "Monument Valley", - "db_id": "45914", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 2.5, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 348, - "fields": { - "title": "Back to Bed", - "db_id": "46943", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 4.0, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 349, - "fields": { - "title": "The Deadly Tower of Monsters", - "db_id": "52371", - "main_time": 4.5, - "extra_time": 4.5, - "completion_time": 6.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 350, - "fields": { - "title": "Octodad: Dadliest Catch", - "db_id": "35877", - "main_time": 2.5, - "extra_time": 3.5, - "completion_time": 7.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 351, - "fields": { - "title": "Hidden Folks", - "db_id": "53269", - "main_time": 3.0, - "extra_time": 4.0, - "completion_time": 5.0, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 352, - "fields": { - "title": "Lovely Planet", - "db_id": "47153", - "main_time": 4.5, - "extra_time": 7.0, - "completion_time": 21.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 353, - "fields": { - "title": "Super House of Dead Ninjas", - "db_id": "41639", - "main_time": 2.5, - "extra_time": 4.5, - "completion_time": 25.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 354, - "fields": { - "title": "Snake Pass", - "db_id": "57504", - "main_time": 5.0, - "extra_time": 9.0, - "completion_time": 11.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 355, - "fields": { - "title": "What Remains of Edith Finch", - "db_id": "48329", - "main_time": 2.0, - "extra_time": 2.5, - "completion_time": 3.0, - "release_date": null, - "update": false, - "genres": [ - 48, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 356, - "fields": { - "title": "Deadlight", - "db_id": "37262", - "main_time": 4.0, - "extra_time": 5.0, - "completion_time": 6.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 357, - "fields": { - "title": "Superhot", - "db_id": "43663", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 358, - "fields": { - "title": "Ruiner", - "db_id": "53485", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 359, - "fields": { - "title": "Hellblade: Senua's Sacrifice", - "db_id": "47363", - "main_time": 7.0, - "extra_time": 8.0, - "completion_time": 9.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 360, - "fields": { - "title": "Expand", - "db_id": "48417", - "main_time": 2.0, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 48, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 361, - "fields": { - "title": "World of Goo", - "db_id": "20647", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 14.0, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 362, - "fields": { - "title": "Sonic Mania", - "db_id": "54733", - "main_time": 5.5, - "extra_time": 8.5, - "completion_time": 19.0, - "release_date": null, - "update": false, - "genres": [ - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 363, - "fields": { - "title": "Mad Max", - "db_id": "42927", - "main_time": 19.5, - "extra_time": 37.5, - "completion_time": 61.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 52, - 61, - 64 - ] - } -}, -{ - "model": "game_database.game", - "pk": 364, - "fields": { - "title": "War for the Overworld", - "db_id": "41532", - "main_time": 14.5, - "extra_time": 22.0, - "completion_time": 32.5, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 365, - "fields": { - "title": "S.T.A.L.K.E.R.: Shadow of Chernobyl", - "db_id": "11725", - "main_time": 16.0, - "extra_time": 26.0, - "completion_time": 44.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 49, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 366, - "fields": { - "title": "Diablo III", - "db_id": "20803", - "main_time": 18.0, - "extra_time": 41.0, - "completion_time": 142.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 367, - "fields": { - "title": "Battlefield 4", - "db_id": "39035", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 368, - "fields": { - "title": "Mass Effect", - "db_id": "16909", - "main_time": 17.0, - "extra_time": 29.0, - "completion_time": 43.5, - "release_date": null, - "update": false, - "genres": [ - 49, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 369, - "fields": { - "title": "Mass Effect 2", - "db_id": "21590", - "main_time": 24.5, - "extra_time": 35.5, - "completion_time": 50.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 370, - "fields": { - "title": "Mirror's Edge", - "db_id": "21213", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 11.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 371, - "fields": { - "title": "Antichamber", - "db_id": "32844", - "main_time": 6.0, - "extra_time": 7.5, - "completion_time": 9.0, - "release_date": null, - "update": false, - "genres": [ - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 372, - "fields": { - "title": "Fallout 3", - "db_id": "20504", - "main_time": 23.0, - "extra_time": 56.5, - "completion_time": 116.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 373, - "fields": { - "title": "Gone Home", - "db_id": "38327", - "main_time": 2.0, - "extra_time": 2.5, - "completion_time": 3.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 374, - "fields": { - "title": "Half-Life 2: Lost Coast", - "db_id": "3015", - "main_time": 23.0, - "extra_time": 27.0, - "completion_time": 28.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 375, - "fields": { - "title": "Half-Life: Blue Shift", - "db_id": "7814", - "main_time": 3.0, - "extra_time": 3.5, - "completion_time": 4.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 376, - "fields": { - "title": "Half-Life: Opposing Force", - "db_id": "16508", - "main_time": 5.5, - "extra_time": 6.5, - "completion_time": 7.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 377, - "fields": { - "title": "Kane & Lynch: Dead Men", - "db_id": "19874", - "main_time": 5.5, - "extra_time": 6.5, - "completion_time": 8.5, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 378, - "fields": { - "title": "Payday: The Heist", - "db_id": "35520", - "main_time": 9.0, - "extra_time": 43.5, - "completion_time": 126.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 379, - "fields": { - "title": "The Beginner's Guide", - "db_id": "51033", - "main_time": 1.5, - "extra_time": 1.5, - "completion_time": 1.5, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 380, - "fields": { - "title": "The Binding of Isaac: Rebirth", - "db_id": "40865", - "main_time": 4.5, - "extra_time": 67.0, - "completion_time": 230.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49, - 66 - ] - } -}, -{ - "model": "game_database.game", - "pk": 381, - "fields": { - "title": "Undertale", - "db_id": "50897", - "main_time": 6.5, - "extra_time": 10.5, - "completion_time": 19.5, - "release_date": null, - "update": false, - "genres": [ - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 382, - "fields": { - "title": "Ziggurat", - "db_id": "47308", - "main_time": 4.0, - "extra_time": 14.5, - "completion_time": 53.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 49, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 383, - "fields": { - "title": "Assassin's Creed", - "db_id": "2950", - "main_time": 15.0, - "extra_time": 20.0, - "completion_time": 31.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 384, - "fields": { - "title": "Assassin's Creed II", - "db_id": "22928", - "main_time": 19.0, - "extra_time": 27.0, - "completion_time": 35.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 385, - "fields": { - "title": "Far Cry 3", - "db_id": "32933", - "main_time": 15.5, - "extra_time": 25.5, - "completion_time": 38.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 386, - "fields": { - "title": "Far Cry 3: Blood Dragon", - "db_id": "42241", - "main_time": 4.5, - "extra_time": 7.0, - "completion_time": 8.5, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 388, - "fields": { - "title": "The Witcher 2: Assassins of Kings", - "db_id": "28178", - "main_time": 24.0, - "extra_time": 33.5, - "completion_time": 54.0, - "release_date": null, - "update": false, - "genres": [ - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 389, - "fields": { - "title": "Dishonored", - "db_id": "35850", - "main_time": 12.0, - "extra_time": 18.0, - "completion_time": 33.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 390, - "fields": { - "title": "Borderlands 2", - "db_id": "36055", - "main_time": 30.5, - "extra_time": 52.0, - "completion_time": 114.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 391, - "fields": { - "title": "Shovel Knight", - "db_id": "42034", - "main_time": 6.5, - "extra_time": 8.5, - "completion_time": 17.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 392, - "fields": { - "title": "Middle-earth: Shadow of Mordor", - "db_id": "44484", - "main_time": 15.5, - "extra_time": 23.0, - "completion_time": 31.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 393, - "fields": { - "title": "Batman: Arkham Asylum", - "db_id": "23245", - "main_time": 12.0, - "extra_time": 16.5, - "completion_time": 25.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 394, - "fields": { - "title": "Metro Redux", - "db_id": "47329", - "main_time": 17.0, - "extra_time": 28.5, - "completion_time": 51.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 65 - ] - } -}, -{ - "model": "game_database.game", - "pk": 395, - "fields": { - "title": "Super Time Force", - "db_id": "37419", - "main_time": 4.0, - "extra_time": 5.0, - "completion_time": 13.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 396, - "fields": { - "title": "Dark Souls", - "db_id": "32697", - "main_time": 46.5, - "extra_time": 62.0, - "completion_time": 107.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 397, - "fields": { - "title": "Kane & Lynch 2: Dog Days", - "db_id": "26394", - "main_time": 4.0, - "extra_time": 4.5, - "completion_time": 6.5, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 398, - "fields": { - "title": "Call of Juarez", - "db_id": "21191", - "main_time": 8.0, - "extra_time": 9.0, - "completion_time": 10.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 399, - "fields": { - "title": "Galak-Z", - "db_id": "42925", - "main_time": 9.0, - "extra_time": 14.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 62 - ] - } -}, -{ - "model": "game_database.game", - "pk": 400, - "fields": { - "title": "Serious Sam: The First Encounter", - "db_id": "27152", - "main_time": 6.0, - "extra_time": 7.5, - "completion_time": 8.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 401, - "fields": { - "title": "Abz\u00fb", - "db_id": "46573", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 402, - "fields": { - "title": "Retro City Rampage", - "db_id": "31558", - "main_time": 6.0, - "extra_time": 8.0, - "completion_time": 11.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 403, - "fields": { - "title": "Painkiller Hell & Damnation", - "db_id": "38535", - "main_time": 4.5, - "extra_time": 10.0, - "completion_time": 21.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 404, - "fields": { - "title": "Warhammer 40,000: Space Marine", - "db_id": "23708", - "main_time": 8.0, - "extra_time": 9.5, - "completion_time": 23.5, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 405, - "fields": { - "title": "Star Wars: Republic Commando", - "db_id": "1339", - "main_time": 9.0, - "extra_time": 9.5, - "completion_time": 10.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 406, - "fields": { - "title": "Ori and the Blind Forest", - "db_id": "46548", - "main_time": 8.0, - "extra_time": 10.0, - "completion_time": 10.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 47, - 48 - ] - } -}, -{ - "model": "game_database.game", - "pk": 407, - "fields": { - "title": "Warhammer 40,000: Dawn of War III", - "db_id": "35675", - "main_time": 17.5, - "extra_time": 19.5, - "completion_time": 21.0, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 408, - "fields": { - "title": "Warhammer 40,000: Dawn of War - Winter Assault", - "db_id": "19335", - "main_time": 11.0, - "extra_time": 13.0, - "completion_time": 20.5, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 409, - "fields": { - "title": "Half-Life 2: Episode Two", - "db_id": "9480", - "main_time": 5.0, - "extra_time": 6.0, - "completion_time": 8.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 410, - "fields": { - "title": "Fallout: New Vegas", - "db_id": "25933", - "main_time": 27.5, - "extra_time": 60.5, - "completion_time": 132.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 411, - "fields": { - "title": "Star Wars: The Force Unleashed", - "db_id": "20626", - "main_time": 8.0, - "extra_time": 12.0, - "completion_time": 17.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 412, - "fields": { - "title": "Warhammer 40,000: Dawn of War - Dark Crusade", - "db_id": "5681", - "main_time": 15.0, - "extra_time": 31.0, - "completion_time": 50.5, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 413, - "fields": { - "title": "Warhammer 40,000: Dawn of War II", - "db_id": "21175", - "main_time": 15.0, - "extra_time": 21.0, - "completion_time": 44.0, - "release_date": null, - "update": false, - "genres": [ - 49, - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 414, - "fields": { - "title": "Epistory: Typing Chronicles", - "db_id": "52327", - "main_time": 5.0, - "extra_time": 6.5, - "completion_time": 9.5, - "release_date": null, - "update": false, - "genres": [ - 53, - 58, - 67 - ] - } -}, -{ - "model": "game_database.game", - "pk": 415, - "fields": { - "title": "Warhammer 40,000: Dawn of War II: Chaos Rising", - "db_id": "28188", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 416, - "fields": { - "title": "Lords of the Fallen", - "db_id": "42672", - "main_time": 14.5, - "extra_time": 21.0, - "completion_time": 44.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 417, - "fields": { - "title": "F.E.A.R.: First Encounter Assault Recon", - "db_id": "4800", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 418, - "fields": { - "title": "AER: Memories of Old", - "db_id": "53653", - "main_time": 3.0, - "extra_time": 3.5, - "completion_time": 4.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 419, - "fields": { - "title": "Bulletstorm", - "db_id": "30088", - "main_time": 7.5, - "extra_time": 9.5, - "completion_time": 15.5, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 420, - "fields": { - "title": "Half-Life", - "db_id": "2980", - "main_time": 12.0, - "extra_time": 14.0, - "completion_time": 15.0, - "release_date": null, - "update": false, - "genres": [ - 45 - ] - } -}, -{ - "model": "game_database.game", - "pk": 421, - "fields": { - "title": "Seven: Enhanced Edition", - "db_id": "73551", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 422, - "fields": { - "title": "Assassin's Creed: Brotherhood", - "db_id": "31001", - "main_time": 15.0, - "extra_time": 25.5, - "completion_time": 41.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 423, - "fields": { - "title": "8-Bit Armies", - "db_id": "53490", - "main_time": 7.5, - "extra_time": 16.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 54, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 424, - "fields": { - "title": "Acceleration Of SUGURI 2", - "db_id": "37241", - "main_time": 38.0, - "extra_time": 0.0, - "completion_time": 11.0, - "release_date": null, - "update": false, - "genres": [ - 52, - 56 - ] - } -}, -{ - "model": "game_database.game", - "pk": 425, - "fields": { - "title": "Amnesia: The Dark Descent", - "db_id": "30087", - "main_time": 8.0, - "extra_time": 9.0, - "completion_time": 10.5, - "release_date": null, - "update": false, - "genres": [ - 48, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 426, - "fields": { - "title": "Aragami", - "db_id": "54143", - "main_time": 6.5, - "extra_time": 10.0, - "completion_time": 18.5, - "release_date": null, - "update": false, - "genres": [ - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 427, - "fields": { - "title": "Assassin's Creed Chronicles: China", - "db_id": "49318", - "main_time": 6.0, - "extra_time": 9.5, - "completion_time": 17.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 428, - "fields": { - "title": "Batman: Arkham Knight", - "db_id": "45577", - "main_time": 16.0, - "extra_time": 29.0, - "completion_time": 46.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 429, - "fields": { - "title": "Bayonetta", - "db_id": "20710", - "main_time": 11.0, - "extra_time": 15.5, - "completion_time": 43.0, - "release_date": null, - "update": false, - "genres": [ - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 430, - "fields": { - "title": "Bear With Me", - "db_id": "54995", - "main_time": 7.5, - "extra_time": 8.0, - "completion_time": 11.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 431, - "fields": { - "title": "Beholder", - "db_id": "55285", - "main_time": 6.0, - "extra_time": 9.5, - "completion_time": 19.0, - "release_date": null, - "update": false, - "genres": [ - 51, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 432, - "fields": { - "title": "Homeworld Remastered Collection", - "db_id": "48984", - "main_time": 24.0, - "extra_time": 0.0, - "completion_time": 1.0, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 433, - "fields": { - "title": "Door Kickers", - "db_id": "42792", - "main_time": 5.0, - "extra_time": 15.5, - "completion_time": 41.0, - "release_date": null, - "update": false, - "genres": [ - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 434, - "fields": { - "title": "Downwell", - "db_id": "48935", - "main_time": 8.0, - "extra_time": 12.0, - "completion_time": 15.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 62 - ] - } -}, -{ - "model": "game_database.game", - "pk": 435, - "fields": { - "title": "TIS-100", - "db_id": "49901", - "main_time": 15.5, - "extra_time": 32.5, - "completion_time": 49.5, - "release_date": null, - "update": false, - "genres": [ - 48, - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 436, - "fields": { - "title": "Volgarr the Viking", - "db_id": "42298", - "main_time": 9.5, - "extra_time": 14.0, - "completion_time": 21.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 437, - "fields": { - "title": "Nuclear Throne", - "db_id": "41999", - "main_time": 16.0, - "extra_time": 62.5, - "completion_time": 194.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 438, - "fields": { - "title": "Darkest Dungeon", - "db_id": "44203", - "main_time": 53.0, - "extra_time": 79.5, - "completion_time": 103.0, - "release_date": null, - "update": false, - "genres": [ - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 439, - "fields": { - "title": "Wolfenstein 3D", - "db_id": "7694", - "main_time": 7.0, - "extra_time": 10.0, - "completion_time": 10.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 440, - "fields": { - "title": "Tooth and Tail", - "db_id": "52522", - "main_time": 9.0, - "extra_time": 10.0, - "completion_time": 11.0, - "release_date": null, - "update": false, - "genres": [ - 54, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 441, - "fields": { - "title": "Flinthook", - "db_id": "53249", - "main_time": 19.5, - "extra_time": 35.0, - "completion_time": 53.0, - "release_date": null, - "update": false, - "genres": [ - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 442, - "fields": { - "title": "Duet", - "db_id": "44352", - "main_time": 2.5, - "extra_time": 6.0, - "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 443, - "fields": { - "title": "Luftrausers", - "db_id": "39474", - "main_time": 4.0, - "extra_time": 6.0, - "completion_time": 17.0, - "release_date": null, - "update": false, - "genres": [ - 62 - ] - } -}, -{ - "model": "game_database.game", - "pk": 444, - "fields": { - "title": "Race the Sun", - "db_id": "42239", - "main_time": 6.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 61 - ] - } -}, -{ - "model": "game_database.game", - "pk": 445, - "fields": { - "title": "Planetbase", - "db_id": "51197", - "main_time": 6.5, - "extra_time": 18.5, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 51, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 446, - "fields": { - "title": "Prison Architect", - "db_id": "36763", - "main_time": 15.0, - "extra_time": 29.5, - "completion_time": 55.0, - "release_date": null, - "update": false, - "genres": [ - 51, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 447, - "fields": { - "title": "ArmA III", - "db_id": "35383", - "main_time": 19.5, - "extra_time": 44.5, - "completion_time": 86.5, - "release_date": null, - "update": false, - "genres": [ - 45, - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 448, - "fields": { - "title": "Ashes of the Singularity", - "db_id": "49088", - "main_time": 11.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 54 - ] - } -}, -{ - "model": "game_database.game", - "pk": 449, - "fields": { - "title": "Assassin's Creed: Rogue", - "db_id": "47291", - "main_time": 10.5, - "extra_time": 21.0, - "completion_time": 37.0, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 450, - "fields": { - "title": "Batman: Arkham Origins", - "db_id": "42245", - "main_time": 12.5, - "extra_time": 22.0, - "completion_time": 37.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 57 - ] - } -}, -{ - "model": "game_database.game", - "pk": 451, - "fields": { - "title": "Harbinger", - "db_id": "19761", - "main_time": 0.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 49, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 452, - "fields": { - "title": "FTL: Faster Than Light", - "db_id": "37770", - "main_time": 11.5, - "extra_time": 30.0, - "completion_time": 125.0, - "release_date": null, - "update": false, - "genres": [ - 49, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 453, - "fields": { - "title": "Xenon Valkyrie", - "db_id": "58180", - "main_time": 0.0, - "extra_time": 12.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 454, - "fields": { - "title": "Kingdom", - "db_id": "47635", - "main_time": 27.0, - "extra_time": 40.0, - "completion_time": 61.5, - "release_date": null, - "update": false, - "genres": [ - 51, - 53, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 455, - "fields": { - "title": "Viscera Cleanup Detail: Shadow Warrior", - "db_id": "44694", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 456, - "fields": { - "title": "The Wolf Among Us", - "db_id": "34213", - "main_time": 9.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 457, - "fields": { - "title": "That Dragon, Cancer", - "db_id": "43546", - "main_time": 2.0, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 458, - "fields": { - "title": "Master of Orion", - "db_id": "49906", - "main_time": 30.0, - "extra_time": 0.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 459, - "fields": { - "title": "Enter the Gungeon", - "db_id": "48332", - "main_time": 16.0, - "extra_time": 39.5, - "completion_time": 148.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49, - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 460, - "fields": { - "title": "Furi", - "db_id": "52304", - "main_time": 6.0, - "extra_time": 7.5, - "completion_time": 16.0, - "release_date": null, - "update": false, - "genres": [ - 50, - 66 - ] - } -}, -{ - "model": "game_database.game", - "pk": 461, - "fields": { - "title": "Owlboy", - "db_id": "23714", - "main_time": 8.0, - "extra_time": 10.0, - "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 462, - "fields": { - "title": "Night in the Woods", - "db_id": "44986", - "main_time": 8.5, - "extra_time": 11.5, - "completion_time": 23.5, - "release_date": null, - "update": false, - "genres": [ - 47, - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 463, - "fields": { - "title": "Hollow Knight", - "db_id": "48412", - "main_time": 23.0, - "extra_time": 35.5, - "completion_time": 49.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 47 - ] - } -}, -{ - "model": "game_database.game", - "pk": 464, - "fields": { - "title": "Euro Truck Simulator 2", - "db_id": "40197", - "main_time": 39.5, - "extra_time": 69.0, - "completion_time": 362.0, - "release_date": null, - "update": false, - "genres": [ - 51, - 61 - ] - } -}, -{ - "model": "game_database.game", - "pk": 465, - "fields": { - "title": "Europa Universalis", - "db_id": "11305", - "main_time": 0.0, - "extra_time": 20.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 51, - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 466, - "fields": { - "title": "Farming Simulator 17", - "db_id": "54151", - "main_time": 37.0, - "extra_time": 150.0, - "completion_time": 0.0, - "release_date": null, - "update": false, - "genres": [ - 51 - ] - } -}, -{ - "model": "game_database.game", - "pk": 467, - "fields": { - "title": "Final Fantasy XV", - "db_id": "21006", - "main_time": 28.0, - "extra_time": 54.0, - "completion_time": 92.5, - "release_date": null, - "update": false, - "genres": [ - 46, - 49, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 468, - "fields": { - "title": "Hearts of Iron IV", - "db_id": "45214", - "main_time": 44.5, - "extra_time": 242.0, - "completion_time": 423.0, - "release_date": null, - "update": false, - "genres": [ - 55 - ] - } -}, -{ - "model": "game_database.game", - "pk": 469, - "fields": { - "title": "Hitman", - "db_id": "45150", - "main_time": 10.5, - "extra_time": 27.5, - "completion_time": 93.5, - "release_date": null, - "update": false, - "genres": [ - 46 - ] - } -}, -{ - "model": "game_database.game", - "pk": 470, - "fields": { - "title": "Just Cause 3", - "db_id": "48207", - "main_time": 17.0, - "extra_time": 34.0, - "completion_time": 56.0, - "release_date": null, - "update": false, - "genres": [ - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 471, - "fields": { - "title": "Life Is Strange: Before the Storm", - "db_id": "59903", - "main_time": 10.0, - "extra_time": 11.5, - "completion_time": 12.5, - "release_date": null, - "update": false, - "genres": [ - 53 - ] - } -}, -{ - "model": "game_database.game", - "pk": 472, - "fields": { - "title": "Guacamelee!", - "db_id": "37673", - "main_time": 6.0, - "extra_time": 8.5, - "completion_time": 14.0, - "release_date": null, - "update": false, - "genres": [ - 47, - 50, - 57 - ] - } -}, -{ - "model": "game_database.game", - "pk": 473, - "fields": { - "title": "The Witcher 3: Wild Hunt", - "db_id": "41484", - "main_time": 51.0, - "extra_time": 103.0, - "completion_time": 172.0, - "release_date": null, - "update": false, - "genres": [ - 46, - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 474, - "fields": { - "title": "NieR:Automata", - "db_id": "49998", - "main_time": 20.5, - "extra_time": 37.5, - "completion_time": 60.5, - "release_date": null, - "update": false, - "genres": [ - 49, - 50 - ] - } -}, -{ - "model": "game_database.game", - "pk": 475, - "fields": { - "title": "The Evil Within 2", - "db_id": "59907", - "main_time": 13.0, - "extra_time": 18.5, - "completion_time": 28.0, - "release_date": null, - "update": false, - "genres": [ - 52 - ] - } -}, -{ - "model": "game_database.game", - "pk": 476, - "fields": { - "title": "Final Fantasy XII: The Zodiac Age", - "db_id": "54121", - "main_time": 40.0, - "extra_time": 61.5, - "completion_time": 98.0, - "release_date": null, - "update": false, - "genres": [ - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 477, - "fields": { - "title": "I Am Setsuna", - "db_id": "50001", - "main_time": 20.5, - "extra_time": 25.5, - "completion_time": 45.5, - "release_date": null, - "update": false, - "genres": [ - 49 - ] - } -}, -{ - "model": "game_database.game", - "pk": 478, - "fields": { - "title": "Kingdom Come: Deliverance", - "db_id": "44790", - "main_time": 40.0, - "extra_time": 71.5, - "completion_time": 123.0, - "release_date": null, - "update": false, - "genres": [ - 49, - 50 - ] - } -}, -{ - "model": "game_database.platform", - "pk": 3, - "fields": { - "name": "PC" - } -}, -{ - "model": "game_database.platform", - "pk": 4, - "fields": { - "name": "Android" - } -}, -{ - "model": "game_database.gameversion", - "pk": 174, - "fields": { - "parent_game": 233, - "platform": 3, - "release_date": "2013-09-26", - "db_id": "129260", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 175, - "fields": { - "parent_game": 234, - "platform": 3, - "release_date": "2014-02-25", - "db_id": "125787", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 176, - "fields": { - "parent_game": 235, - "platform": 3, - "release_date": "2013-01-15", - "db_id": "117236", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 177, - "fields": { - "parent_game": 236, - "platform": 3, - "release_date": "2016-05-13", - "db_id": "137133", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 178, - "fields": { - "parent_game": 237, - "platform": 3, - "release_date": "2013-11-22", - "db_id": "125659", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 179, - "fields": { - "parent_game": 238, - "platform": 3, - "release_date": "2008-04-09", - "db_id": "74160", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 180, - "fields": { - "parent_game": 239, - "platform": 3, - "release_date": "2011-04-19", - "db_id": "96873", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 181, - "fields": { - "parent_game": 240, - "platform": 3, - "release_date": "2011-11-11", - "db_id": "105774", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 182, - "fields": { - "parent_game": 241, - "platform": 3, - "release_date": "2012-05-01", - "db_id": "116239", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 183, - "fields": { - "parent_game": 242, - "platform": 3, - "release_date": "2004-11-16", - "db_id": "4020", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 184, - "fields": { - "parent_game": 243, - "platform": 3, - "release_date": "2013-08-07", - "db_id": "128595", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 185, - "fields": { - "parent_game": 244, - "platform": 3, - "release_date": "2013-06-03", - "db_id": "127667", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 186, - "fields": { - "parent_game": 245, - "platform": 3, - "release_date": "2006-06-01", - "db_id": "74142", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 187, - "fields": { - "parent_game": 246, - "platform": 3, - "release_date": "2013-08-08", - "db_id": "129071", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 188, - "fields": { - "parent_game": 247, - "platform": 3, - "release_date": "2013-06-27", - "db_id": "128112", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 189, - "fields": { - "parent_game": 248, - "platform": 3, - "release_date": "2010-10-20", - "db_id": "104024", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 190, - "fields": { - "parent_game": 249, - "platform": 3, - "release_date": "2013-02-22", - "db_id": "124973", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 191, - "fields": { - "parent_game": 250, - "platform": 3, - "release_date": "2014-05-20", - "db_id": "133039", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 192, - "fields": { - "parent_game": 251, - "platform": 3, - "release_date": "2014-09-25", - "db_id": "137764", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 193, - "fields": { - "parent_game": 252, - "platform": 3, - "release_date": "2011-07-20", - "db_id": "110287", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 194, - "fields": { - "parent_game": 253, - "platform": 3, - "release_date": "2010-03-05", - "db_id": "88880", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 195, - "fields": { - "parent_game": 254, - "platform": 3, - "release_date": "2011-08-23", - "db_id": "84570", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 196, - "fields": { - "parent_game": 255, - "platform": 3, - "release_date": "2012-11-20", - "db_id": "115760", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 197, - "fields": { - "parent_game": 256, - "platform": 3, - "release_date": "2014-07-21", - "db_id": "136429", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 198, - "fields": { - "parent_game": 257, - "platform": 3, - "release_date": "2013-04-24", - "db_id": "115340", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 199, - "fields": { - "parent_game": 258, - "platform": 3, - "release_date": "2012-06-26", - "db_id": "98634", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 200, - "fields": { - "parent_game": 259, - "platform": 3, - "release_date": "2014-10-07", - "db_id": "132470", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 201, - "fields": { - "parent_game": 260, - "platform": 3, - "release_date": "2013-08-08", - "db_id": "128959", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 202, - "fields": { - "parent_game": 261, - "platform": 3, - "release_date": "2012-10-23", - "db_id": "120290", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 203, - "fields": { - "parent_game": 262, - "platform": 3, - "release_date": "2013-03-05", - "db_id": "117565", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 204, - "fields": { - "parent_game": 263, - "platform": 3, - "release_date": "2015-02-04", - "db_id": "140282", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 205, - "fields": { - "parent_game": 264, - "platform": 3, - "release_date": "2010-01-07", - "db_id": "82399", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 206, - "fields": { - "parent_game": 265, - "platform": 3, - "release_date": "2012-09-07", - "db_id": "119048", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 207, - "fields": { - "parent_game": 266, - "platform": 3, - "release_date": "2012-08-14", - "db_id": "91877", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 208, - "fields": { - "parent_game": 267, - "platform": 3, - "release_date": "2012-10-09", - "db_id": "117244", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 209, - "fields": { - "parent_game": 268, - "platform": 3, - "release_date": "2014-03-03", - "db_id": "145500", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 210, - "fields": { - "parent_game": 269, - "platform": 3, - "release_date": "2014-05-20", - "db_id": "133855", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 211, - "fields": { - "parent_game": 270, - "platform": 3, - "release_date": "2011-11-15", - "db_id": "112611", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 212, - "fields": { - "parent_game": 271, - "platform": 3, - "release_date": "2014-11-18", - "db_id": "138438", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 213, - "fields": { - "parent_game": 272, - "platform": 3, - "release_date": "2015-03-10", - "db_id": "140411", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 214, - "fields": { - "parent_game": 273, - "platform": 3, - "release_date": "2015-01-23", - "db_id": "139719", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 215, - "fields": { - "parent_game": 274, - "platform": 3, - "release_date": "2012-08-14", - "db_id": "91676", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 216, - "fields": { - "parent_game": 275, - "platform": 3, - "release_date": "2015-01-30", - "db_id": "139577", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 217, - "fields": { - "parent_game": 276, - "platform": 3, - "release_date": "2010-07-21", - "db_id": "102246", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 218, - "fields": { - "parent_game": 277, - "platform": 3, - "release_date": "2012-08-15", - "db_id": "117911", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 219, - "fields": { - "parent_game": 278, - "platform": 3, - "release_date": "2014-06-03", - "db_id": "134852", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 220, - "fields": { - "parent_game": 279, - "platform": 3, - "release_date": "2015-05-14", - "db_id": "141613", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 221, - "fields": { - "parent_game": 280, - "platform": 3, - "release_date": "2014-03-18", - "db_id": "131433", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 222, - "fields": { - "parent_game": 281, - "platform": 3, - "release_date": "2013-10-17", - "db_id": "130853", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 223, - "fields": { - "parent_game": 282, - "platform": 3, - "release_date": "2012-06-30", - "db_id": "120481", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 224, - "fields": { - "parent_game": 283, - "platform": 3, - "release_date": "2009-10-13", - "db_id": "73327", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 225, - "fields": { - "parent_game": 284, - "platform": 3, - "release_date": "2015-08-20", - "db_id": "142886", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 226, - "fields": { - "parent_game": 285, - "platform": 3, - "release_date": "2015-09-01", - "db_id": "128086", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 227, - "fields": { - "parent_game": 286, - "platform": 3, - "release_date": "2007-12-04", - "db_id": "74085", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 228, - "fields": { - "parent_game": 287, - "platform": 3, - "release_date": "2011-10-18", - "db_id": "98633", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 229, - "fields": { - "parent_game": 288, - "platform": 3, - "release_date": "2015-02-17", - "db_id": "140151", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 230, - "fields": { - "parent_game": 289, - "platform": 3, - "release_date": "2013-02-19", - "db_id": "84188", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 231, - "fields": { - "parent_game": 290, - "platform": 3, - "release_date": "2013-09-17", - "db_id": "121148", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 232, - "fields": { - "parent_game": 291, - "platform": 3, - "release_date": "2015-04-14", - "db_id": "140418", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 233, - "fields": { - "parent_game": 292, - "platform": 3, - "release_date": "2012-10-23", - "db_id": "120020", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 234, - "fields": { - "parent_game": 293, - "platform": 3, - "release_date": "2013-09-04", - "db_id": "121204", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 235, - "fields": { - "parent_game": 294, - "platform": 3, - "release_date": "2014-01-14", - "db_id": "125581", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 236, - "fields": { - "parent_game": 295, - "platform": 3, - "release_date": "2014-09-19", - "db_id": "137949", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 237, - "fields": { - "parent_game": 296, - "platform": 3, - "release_date": "2016-01-04", - "db_id": "145592", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 238, - "fields": { - "parent_game": 297, - "platform": 3, - "release_date": "2013-09-26", - "db_id": "130356", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 239, - "fields": { - "parent_game": 298, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true - } -}, -{ - "model": "game_database.gameversion", - "pk": 240, - "fields": { - "parent_game": 299, - "platform": 3, - "release_date": "2012-04-11", - "db_id": "116028", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 241, - "fields": { - "parent_game": 300, - "platform": 3, - "release_date": "2015-09-29", - "db_id": "143920", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 242, - "fields": { - "parent_game": 301, - "platform": 3, - "release_date": "2012-10-30", - "db_id": "115544", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 243, - "fields": { - "parent_game": 302, - "platform": 3, - "release_date": "2014-10-07", - "db_id": "137486", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 244, - "fields": { - "parent_game": 303, - "platform": 3, - "release_date": "2016-01-19", - "db_id": "145684", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 245, - "fields": { - "parent_game": 304, - "platform": 3, - "release_date": "2013-05-30", - "db_id": "127644", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 246, - "fields": { - "parent_game": 305, - "platform": 3, - "release_date": "2015-06-09", - "db_id": "146422", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 247, - "fields": { - "parent_game": 306, - "platform": 3, - "release_date": "2015-03-09", - "db_id": "140477", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 248, - "fields": { - "parent_game": 307, - "platform": 3, - "release_date": "2008-01-22", - "db_id": "14414", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 249, - "fields": { - "parent_game": 308, - "platform": 3, - "release_date": "2010-05-18", - "db_id": "84077", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 250, - "fields": { - "parent_game": 309, - "platform": 3, - "release_date": "2017-01-12", - "db_id": "151627", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 251, - "fields": { - "parent_game": 310, - "platform": 3, - "release_date": "2012-09-20", - "db_id": "104299", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 252, - "fields": { - "parent_game": 311, - "platform": 3, - "release_date": "2014-07-01", - "db_id": "135039", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 253, - "fields": { - "parent_game": 312, - "platform": 3, - "release_date": "2010-03-23", - "db_id": "84257", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 254, - "fields": { - "parent_game": 313, - "platform": 3, - "release_date": "2016-04-21", - "db_id": "147312", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 255, - "fields": { - "parent_game": 314, - "platform": 3, - "release_date": "2013-08-28", - "db_id": "129254", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 256, - "fields": { - "parent_game": 315, - "platform": 3, - "release_date": "2016-11-08", - "db_id": "150585", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 257, - "fields": { - "parent_game": 316, - "platform": 3, - "release_date": "2012-10-11", - "db_id": "120015", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 258, - "fields": { - "parent_game": 317, - "platform": 3, - "release_date": "2016-10-25", - "db_id": "150482", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 259, - "fields": { - "parent_game": 318, - "platform": 3, - "release_date": "2015-10-23", - "db_id": "144438", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 260, - "fields": { - "parent_game": 319, - "platform": 3, - "release_date": "2014-02-22", - "db_id": "132627", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 261, - "fields": { - "parent_game": 320, - "platform": 3, - "release_date": "2016-10-28", - "db_id": "149794", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 262, - "fields": { - "parent_game": 321, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true - } -}, -{ - "model": "game_database.gameversion", - "pk": 263, - "fields": { - "parent_game": 322, - "platform": 3, - "release_date": "2008-10-14", - "db_id": "72740", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 264, - "fields": { - "parent_game": 323, - "platform": 3, - "release_date": "2013-03-12", - "db_id": "116449", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 265, - "fields": { - "parent_game": 324, - "platform": 3, - "release_date": "2011-09-07", - "db_id": "112653", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 266, - "fields": { - "parent_game": 325, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true - } -}, -{ - "model": "game_database.gameversion", - "pk": 267, - "fields": { - "parent_game": 326, - "platform": 3, - "release_date": "2018-02-13", - "db_id": "158626", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 268, - "fields": { - "parent_game": 327, - "platform": 3, - "release_date": "2017-03-21", - "db_id": "153196", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 269, - "fields": { - "parent_game": 328, - "platform": 3, - "release_date": "2015-03-06", - "db_id": "140431", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 270, - "fields": { - "parent_game": 329, - "platform": 3, - "release_date": "2008-08-06", - "db_id": "72515", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 271, - "fields": { - "parent_game": 330, - "platform": 3, - "release_date": "2010-10-04", - "db_id": "104618", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 272, - "fields": { - "parent_game": 331, - "platform": 3, - "release_date": "2012-02-22", - "db_id": "115113", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 273, - "fields": { - "parent_game": 332, - "platform": 3, - "release_date": "2015-09-22", - "db_id": "142985", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 274, - "fields": { - "parent_game": 333, - "platform": 3, - "release_date": "2016-01-08", - "db_id": "145591", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 275, - "fields": { - "parent_game": 334, - "platform": 3, - "release_date": "2016-08-16", - "db_id": "149014", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 276, - "fields": { - "parent_game": 335, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true - } -}, -{ - "model": "game_database.gameversion", - "pk": 277, - "fields": { - "parent_game": 336, - "platform": 3, - "release_date": "2017-09-08", - "db_id": "153344", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 278, - "fields": { - "parent_game": 337, - "platform": 3, - "release_date": "2001-12-12", - "db_id": "79664", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 279, - "fields": { - "parent_game": 338, - "platform": 3, - "release_date": "2018-05-22", - "db_id": "160257", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 280, - "fields": { - "parent_game": 339, - "platform": 3, - "release_date": "2015-02-03", - "db_id": "139857", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 281, - "fields": { - "parent_game": 340, - "platform": 3, - "release_date": "2014-02-19", - "db_id": "154309", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 282, - "fields": { - "parent_game": 341, - "platform": 3, - "release_date": "2014-12-11", - "db_id": "139100", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 283, - "fields": { - "parent_game": 342, - "platform": 3, - "release_date": "2010-10-21", - "db_id": "92811", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 284, - "fields": { - "parent_game": 343, - "platform": 3, - "release_date": "2011-06-14", - "db_id": "109556", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 285, - "fields": { - "parent_game": 344, - "platform": 3, - "release_date": "2018-01-23", - "db_id": "159492", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 286, - "fields": { - "parent_game": 345, - "platform": 3, - "release_date": "2015-09-09", - "db_id": "143341", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 287, - "fields": { - "parent_game": 346, - "platform": 3, - "release_date": "2016-07-26", - "db_id": "148668", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 288, - "fields": { - "parent_game": 347, - "platform": 4, - "release_date": "2014-05-14", - "db_id": "139968", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 289, - "fields": { - "parent_game": 348, - "platform": 3, - "release_date": "2014-08-06", - "db_id": "136508", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 290, - "fields": { - "parent_game": 349, - "platform": 3, - "release_date": "2016-01-19", - "db_id": "145752", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 291, - "fields": { - "parent_game": 350, - "platform": 3, - "release_date": "2014-01-30", - "db_id": "128001", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 292, - "fields": { - "parent_game": 351, - "platform": 3, - "release_date": "2017-02-15", - "db_id": "152555", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 293, - "fields": { - "parent_game": 352, - "platform": 3, - "release_date": "2014-07-31", - "db_id": "136399", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 294, - "fields": { - "parent_game": 353, - "platform": 3, - "release_date": "2013-02-18", - "db_id": "125332", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 295, - "fields": { - "parent_game": 354, - "platform": 3, - "release_date": "2017-03-28", - "db_id": "152425", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 296, - "fields": { - "parent_game": 355, - "platform": 3, - "release_date": "2017-04-25", - "db_id": "153714", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 297, - "fields": { - "parent_game": 356, - "platform": 3, - "release_date": "2012-08-01", - "db_id": "117912", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 298, - "fields": { - "parent_game": 357, - "platform": 3, - "release_date": "2016-05-03", - "db_id": "137979", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 299, - "fields": { - "parent_game": 358, - "platform": 3, - "release_date": "2017-09-26", - "db_id": "156108", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 300, - "fields": { - "parent_game": 359, - "platform": 3, - "release_date": "2017-08-08", - "db_id": "155625", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 301, - "fields": { - "parent_game": 360, - "platform": 3, - "release_date": "2017-10-03", - "db_id": "156762", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 302, - "fields": { - "parent_game": 361, - "platform": 3, - "release_date": "2008-10-13", - "db_id": "77625", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 303, - "fields": { - "parent_game": 362, - "platform": 3, - "release_date": "2017-08-15", - "db_id": "151806", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 304, - "fields": { - "parent_game": 363, - "platform": 3, - "release_date": "2015-09-01", - "db_id": "128557", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 305, - "fields": { - "parent_game": 364, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true - } -}, -{ - "model": "game_database.gameversion", - "pk": 306, - "fields": { - "parent_game": 365, - "platform": 3, - "release_date": "2007-03-20", - "db_id": "29875", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 307, - "fields": { - "parent_game": 366, - "platform": 3, - "release_date": "2012-05-15", - "db_id": "72743", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 308, - "fields": { - "parent_game": 367, - "platform": 3, - "release_date": "2013-10-29", - "db_id": "126365", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 309, - "fields": { - "parent_game": 368, - "platform": 3, - "release_date": "2007-11-20", - "db_id": "36165", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 310, - "fields": { - "parent_game": 369, - "platform": 3, - "release_date": "2010-01-26", - "db_id": "84232", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 311, - "fields": { - "parent_game": 370, - "platform": 3, - "release_date": "2008-11-11", - "db_id": "75394", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 312, - "fields": { - "parent_game": 371, - "platform": 3, - "release_date": "2013-01-31", - "db_id": "115333", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 313, - "fields": { - "parent_game": 372, - "platform": 3, - "release_date": "2008-10-28", - "db_id": "72475", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 314, - "fields": { - "parent_game": 373, - "platform": 3, - "release_date": "2013-08-15", - "db_id": "128973", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 315, - "fields": { - "parent_game": 374, - "platform": 3, - "release_date": "2005-10-27", - "db_id": "83884", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 316, - "fields": { - "parent_game": 375, - "platform": 3, - "release_date": "2001-06-12", - "db_id": "79811", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 317, - "fields": { - "parent_game": 376, - "platform": 3, - "release_date": "2005-09-26", - "db_id": "95371", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 318, - "fields": { - "parent_game": 377, - "platform": 3, - "release_date": "2007-11-13", - "db_id": "49716", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 319, - "fields": { - "parent_game": 378, - "platform": 3, - "release_date": "2011-10-18", - "db_id": "113583", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 320, - "fields": { - "parent_game": 379, - "platform": 3, - "release_date": "2015-10-01", - "db_id": "143931", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 321, - "fields": { - "parent_game": 380, - "platform": 3, - "release_date": "2014-11-04", - "db_id": "137471", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 322, - "fields": { - "parent_game": 381, - "platform": 3, - "release_date": "2015-09-15", - "db_id": "143665", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 323, - "fields": { - "parent_game": 382, - "platform": 3, - "release_date": "2014-10-23", - "db_id": "139192", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 324, - "fields": { - "parent_game": 383, - "platform": 3, - "release_date": "2007-11-14", - "db_id": "6778", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 325, - "fields": { - "parent_game": 384, - "platform": 3, - "release_date": "2009-11-17", - "db_id": "84193", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 326, - "fields": { - "parent_game": 385, - "platform": 3, - "release_date": "2012-12-04", - "db_id": "115948", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 327, - "fields": { - "parent_game": 386, - "platform": 3, - "release_date": "2013-05-01", - "db_id": "126650", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 329, - "fields": { - "parent_game": 388, - "platform": 3, - "release_date": "2011-05-17", - "db_id": "101345", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 330, - "fields": { - "parent_game": 389, - "platform": 3, - "release_date": "2012-10-09", - "db_id": "115336", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 331, - "fields": { - "parent_game": 390, - "platform": 3, - "release_date": "2012-09-18", - "db_id": "115620", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 332, - "fields": { - "parent_game": 391, - "platform": 3, - "release_date": "2014-06-26", - "db_id": "132619", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 333, - "fields": { - "parent_game": 392, - "platform": 3, - "release_date": "2014-09-30", - "db_id": "132672", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 334, - "fields": { - "parent_game": 393, - "platform": 3, - "release_date": "2009-08-25", - "db_id": "82409", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 335, - "fields": { - "parent_game": 394, - "platform": 3, - "release_date": "2014-08-26", - "db_id": "136723", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 336, - "fields": { - "parent_game": 395, - "platform": 3, - "release_date": "2014-05-14", - "db_id": "115781", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 337, - "fields": { - "parent_game": 396, - "platform": 3, - "release_date": "2011-10-07", - "db_id": "108519", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 338, - "fields": { - "parent_game": 397, - "platform": 3, - "release_date": "2010-08-17", - "db_id": "91459", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 339, - "fields": { - "parent_game": 398, - "platform": 3, - "release_date": "2007-06-05", - "db_id": "74467", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 340, - "fields": { - "parent_game": 399, - "platform": 3, - "release_date": "2015-08-04", - "db_id": "142537", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 341, - "fields": { - "parent_game": 400, - "platform": 3, - "release_date": "2009-11-24", - "db_id": "88325", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 342, - "fields": { - "parent_game": 401, - "platform": 3, - "release_date": "2016-08-02", - "db_id": "148847", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 343, - "fields": { - "parent_game": 402, - "platform": 3, - "release_date": "2013-02-28", - "db_id": "101328", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 344, - "fields": { - "parent_game": 403, - "platform": 3, - "release_date": "2012-10-31", - "db_id": "128823", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 345, - "fields": { - "parent_game": 404, - "platform": 3, - "release_date": "2011-09-09", - "db_id": "103054", - "update": false + "release_date": null, + "description": "A prequel to the initial Life is Strange game, focused on Chloe's life.", + "img_url": "https://www.giantbomb.com/api/image/original/2945312-screen%20shot%202017-06-11%20at%208.09.07%20pm.png", + "update": false, + "genres": [ + 5 + ] } }, { - "model": "game_database.gameversion", - "pk": 346, + "model": "game_database.platform", + "pk": 1, "fields": { - "parent_game": 405, - "platform": 3, - "release_date": "2005-03-01", - "db_id": "76480", + "name": "PC", + "db_id": "94", + "description": "The PC (Personal Computer) is a highly configurable and upgradable gaming platform that, among home systems, sports the widest variety of control methods, largest library of games, and cutting edge graphics and sound capabilities.", + "img_url": "https://www.giantbomb.com/api/image/original/1650285-ibm_pc_5150.jpg", "update": false } }, { "model": "game_database.gameversion", - "pk": 347, + "pk": 1, "fields": { - "parent_game": 406, - "platform": 3, - "release_date": "2015-03-11", - "db_id": "137792", - "update": false + "parent_game": 1, + "platform": 1, + "release_date": "2016-04-22", + "db_id": "147284", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 348, + "pk": 2, "fields": { - "parent_game": 407, - "platform": 3, - "release_date": "2017-04-27", - "db_id": "112101", - "update": false + "parent_game": 2, + "platform": 1, + "release_date": null, + "db_id": "", + "update": true, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 349, + "pk": 3, "fields": { - "parent_game": 408, - "platform": 3, - "release_date": "2007-08-07", - "db_id": "92122", - "update": false + "parent_game": 3, + "platform": 1, + "release_date": "2010-09-08", + "db_id": "104196", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 350, + "pk": 4, "fields": { - "parent_game": 409, - "platform": 3, - "release_date": "2008-04-08", - "db_id": "24226", - "update": false + "parent_game": 4, + "platform": 1, + "release_date": "2016-10-04", + "db_id": "149783", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 351, + "pk": 5, "fields": { - "parent_game": 410, - "platform": 3, - "release_date": "2010-10-19", - "db_id": "84234", - "update": false + "parent_game": 5, + "platform": 1, + "release_date": "2015-04-21", + "db_id": "140974", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 352, + "pk": 6, "fields": { - "parent_game": 411, - "platform": 3, - "release_date": "2008-09-16", - "db_id": "72812", - "update": false + "parent_game": 6, + "platform": 1, + "release_date": "2015-06-23", + "db_id": "137781", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 353, + "pk": 7, "fields": { - "parent_game": 412, - "platform": 3, - "release_date": "2006-12-07", - "db_id": "80605", - "update": false + "parent_game": 7, + "platform": 1, + "release_date": null, + "db_id": "", + "update": true, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 354, + "pk": 8, "fields": { - "parent_game": 413, - "platform": 3, - "release_date": "2009-02-20", - "db_id": "79719", - "update": false + "parent_game": 8, + "platform": 1, + "release_date": "2010-01-05", + "db_id": "73858", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 355, + "pk": 9, "fields": { - "parent_game": 414, - "platform": 3, - "release_date": "2016-03-30", - "db_id": "154611", - "update": false + "parent_game": 9, + "platform": 1, + "release_date": "2016-08-08", + "db_id": "158105", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 356, + "pk": 10, "fields": { - "parent_game": 415, - "platform": 3, - "release_date": "2010-03-11", - "db_id": "88198", - "update": false + "parent_game": 10, + "platform": 1, + "release_date": "2016-11-09", + "db_id": "151420", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 357, + "pk": 11, "fields": { - "parent_game": 416, - "platform": 3, - "release_date": "2014-10-28", - "db_id": "127569", - "update": false + "parent_game": 11, + "platform": 1, + "release_date": "2015-02-25", + "db_id": "140455", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 358, + "pk": 12, "fields": { - "parent_game": 417, - "platform": 3, - "release_date": "2007-04-20", - "db_id": "12330", - "update": false + "parent_game": 12, + "platform": 1, + "release_date": "2014-10-20", + "db_id": "129705", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 359, + "pk": 13, "fields": { - "parent_game": 418, - "platform": 3, - "release_date": "2017-10-25", - "db_id": "157033", - "update": false + "parent_game": 13, + "platform": 1, + "release_date": "2015-10-15", + "db_id": "144366", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 360, + "pk": 14, "fields": { - "parent_game": 419, - "platform": 3, - "release_date": "2011-02-22", - "db_id": "91517", - "update": false + "parent_game": 14, + "platform": 1, + "release_date": "2015-07-20", + "db_id": "142722", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 361, + "pk": 15, "fields": { - "parent_game": 420, - "platform": 3, - "release_date": "2002-07-22", - "db_id": "4663", - "update": false + "parent_game": 15, + "platform": 1, + "release_date": "2013-09-13", + "db_id": "129591", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 362, + "pk": 16, "fields": { - "parent_game": 421, - "platform": 3, - "release_date": "2017-12-01", - "db_id": "166201", - "update": false + "parent_game": 16, + "platform": 1, + "release_date": "2015-12-05", + "db_id": "130915", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 363, + "pk": 17, "fields": { - "parent_game": 422, - "platform": 3, - "release_date": "2010-11-16", - "db_id": "98752", - "update": false + "parent_game": 17, + "platform": 1, + "release_date": "2016-01-19", + "db_id": "144494", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 364, + "pk": 18, "fields": { - "parent_game": 423, - "platform": 3, - "release_date": "2016-04-22", - "db_id": "147284", - "update": false + "parent_game": 18, + "platform": 1, + "release_date": "2007-08-04", + "db_id": "19698", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 365, + "pk": 19, "fields": { - "parent_game": 424, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true + "parent_game": 19, + "platform": 1, + "release_date": "2017-09-12", + "db_id": "156297", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 366, + "pk": 20, "fields": { - "parent_game": 425, - "platform": 3, - "release_date": "2010-09-08", - "db_id": "104196", - "update": false + "parent_game": 20, + "platform": 1, + "release_date": "2017-04-18", + "db_id": "153581", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 367, + "pk": 21, "fields": { - "parent_game": 426, - "platform": 3, - "release_date": "2016-10-04", - "db_id": "149783", - "update": false + "parent_game": 21, + "platform": 1, + "release_date": "2013-10-17", + "db_id": "130853", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 368, + "pk": 22, "fields": { - "parent_game": 427, - "platform": 3, - "release_date": "2015-04-21", - "db_id": "140974", - "update": false + "parent_game": 22, + "platform": 1, + "release_date": "2012-06-30", + "db_id": "120481", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 369, + "pk": 23, "fields": { - "parent_game": 428, - "platform": 3, - "release_date": "2015-06-23", - "db_id": "137781", - "update": false + "parent_game": 23, + "platform": 1, + "release_date": "2009-10-13", + "db_id": "73327", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 370, + "pk": 24, "fields": { - "parent_game": 429, - "platform": 3, - "release_date": "2010-01-05", - "db_id": "73858", - "update": false + "parent_game": 24, + "platform": 1, + "release_date": "2015-12-22", + "db_id": "168297", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 371, + "pk": 25, "fields": { - "parent_game": 430, - "platform": 3, - "release_date": "2016-08-08", - "db_id": "158105", - "update": false + "parent_game": 25, + "platform": 1, + "release_date": "2015-09-01", + "db_id": "128086", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 372, + "pk": 26, "fields": { - "parent_game": 431, - "platform": 3, - "release_date": "2016-11-09", - "db_id": "151420", - "update": false + "parent_game": 26, + "platform": 1, + "release_date": "2007-12-04", + "db_id": "74085", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 373, + "pk": 27, "fields": { - "parent_game": 432, - "platform": 3, - "release_date": "2015-02-25", - "db_id": "140455", - "update": false + "parent_game": 27, + "platform": 1, + "release_date": "2011-10-18", + "db_id": "98633", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 374, + "pk": 28, "fields": { - "parent_game": 433, - "platform": 3, - "release_date": "2014-10-20", - "db_id": "129705", - "update": false + "parent_game": 28, + "platform": 1, + "release_date": "2015-02-17", + "db_id": "140151", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 375, + "pk": 29, "fields": { - "parent_game": 434, - "platform": 3, - "release_date": "2015-10-15", - "db_id": "144366", - "update": false + "parent_game": 29, + "platform": 1, + "release_date": "2013-02-19", + "db_id": "84188", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 376, + "pk": 30, "fields": { - "parent_game": 435, - "platform": 3, - "release_date": "2015-07-20", - "db_id": "142722", - "update": false + "parent_game": 30, + "platform": 1, + "release_date": "2013-09-17", + "db_id": "121148", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 377, + "pk": 31, "fields": { - "parent_game": 436, - "platform": 3, - "release_date": "2013-09-13", - "db_id": "129591", - "update": false + "parent_game": 31, + "platform": 1, + "release_date": "2016-05-13", + "db_id": "137133", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 378, + "pk": 32, "fields": { - "parent_game": 437, - "platform": 3, - "release_date": "2015-12-05", - "db_id": "130915", - "update": false + "parent_game": 32, + "platform": 1, + "release_date": null, + "db_id": "", + "update": true, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 379, + "pk": 33, "fields": { - "parent_game": 438, - "platform": 3, - "release_date": "2016-01-19", - "db_id": "144494", - "update": false + "parent_game": 33, + "platform": 1, + "release_date": "2015-04-14", + "db_id": "140418", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 380, + "pk": 34, "fields": { - "parent_game": 439, - "platform": 3, - "release_date": "2007-08-04", - "db_id": "19698", - "update": false + "parent_game": 34, + "platform": 1, + "release_date": "2012-10-23", + "db_id": "120020", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 381, + "pk": 35, "fields": { - "parent_game": 440, - "platform": 3, - "release_date": "2017-09-12", - "db_id": "156297", - "update": false + "parent_game": 35, + "platform": 1, + "release_date": "2013-09-04", + "db_id": "121204", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 382, + "pk": 36, "fields": { - "parent_game": 441, - "platform": 3, - "release_date": "2017-04-18", - "db_id": "153581", - "update": false + "parent_game": 36, + "platform": 1, + "release_date": "2014-01-14", + "db_id": "125581", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 383, + "pk": 37, "fields": { - "parent_game": 442, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true + "parent_game": 37, + "platform": 1, + "release_date": "2014-09-19", + "db_id": "137949", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 384, + "pk": 38, "fields": { - "parent_game": 443, - "platform": 3, + "parent_game": 38, + "platform": 1, "release_date": "2014-03-18", "db_id": "133219", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 385, + "pk": 39, "fields": { - "parent_game": 444, - "platform": 3, + "parent_game": 39, + "platform": 1, "release_date": "2013-08-19", "db_id": "129205", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 386, + "pk": 40, "fields": { - "parent_game": 445, - "platform": 3, + "parent_game": 40, + "platform": 1, "release_date": "2018-01-11", "db_id": "158256", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 387, + "pk": 41, "fields": { - "parent_game": 446, - "platform": 3, + "parent_game": 41, + "platform": 1, "release_date": "2016-06-28", "db_id": "148315", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 388, + "pk": 42, "fields": { - "parent_game": 447, - "platform": 3, + "parent_game": 42, + "platform": 1, "release_date": "2013-09-12", "db_id": "125867", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 389, + "pk": 43, "fields": { - "parent_game": 448, - "platform": 3, + "parent_game": 43, + "platform": 1, "release_date": "2016-03-31", "db_id": "147031", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 390, + "pk": 44, "fields": { - "parent_game": 449, - "platform": 3, + "parent_game": 44, + "platform": 1, "release_date": "2014-11-11", "db_id": "137767", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 391, + "pk": 45, "fields": { - "parent_game": 450, - "platform": 3, + "parent_game": 45, + "platform": 1, "release_date": "2013-10-25", "db_id": "127873", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 392, - "fields": { - "parent_game": 451, - "platform": 3, - "release_date": null, - "db_id": "", - "update": true + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 393, + "pk": 46, "fields": { - "parent_game": 452, - "platform": 3, + "parent_game": 46, + "platform": 1, "release_date": "2012-09-14", "db_id": "119544", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 394, + "pk": 47, "fields": { - "parent_game": 453, - "platform": 3, + "parent_game": 47, + "platform": 1, "release_date": "2017-12-19", "db_id": "157787", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 395, + "pk": 48, "fields": { - "parent_game": 454, - "platform": 3, + "parent_game": 48, + "platform": 1, "release_date": "2015-10-21", "db_id": "145078", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 396, + "pk": 49, "fields": { - "parent_game": 455, - "platform": 3, + "parent_game": 49, + "platform": 1, "release_date": "2013-10-11", "db_id": "155608", - "update": false + "update": false, + "publishers": [], + "developers": [] + } +}, +{ + "model": "game_database.gameversion", + "pk": 50, + "fields": { + "parent_game": 50, + "platform": 1, + "release_date": "2015-08-04", + "db_id": "142537", + "update": false, + "publishers": [], + "developers": [] + } +}, +{ + "model": "game_database.gameversion", + "pk": 51, + "fields": { + "parent_game": 51, + "platform": 1, + "release_date": "2009-11-24", + "db_id": "88325", + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 397, + "pk": 52, "fields": { - "parent_game": 456, - "platform": 3, + "parent_game": 52, + "platform": 1, "release_date": "2013-10-11", "db_id": "130645", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 398, + "pk": 53, "fields": { - "parent_game": 457, - "platform": 3, + "parent_game": 53, + "platform": 1, "release_date": "2016-01-12", "db_id": "145600", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 399, + "pk": 54, "fields": { - "parent_game": 458, - "platform": 3, + "parent_game": 54, + "platform": 1, "release_date": "2016-02-26", "db_id": "161286", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 400, + "pk": 55, "fields": { - "parent_game": 459, - "platform": 3, + "parent_game": 55, + "platform": 1, "release_date": "2016-04-05", "db_id": "147063", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 401, + "pk": 56, "fields": { - "parent_game": 460, - "platform": 3, + "parent_game": 56, + "platform": 1, "release_date": "2016-07-05", "db_id": "148385", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 402, + "pk": 57, "fields": { - "parent_game": 461, - "platform": 3, + "parent_game": 57, + "platform": 1, "release_date": "2016-11-01", "db_id": "150371", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 403, + "pk": 58, "fields": { - "parent_game": 462, - "platform": 3, + "parent_game": 58, + "platform": 1, "release_date": "2017-02-21", "db_id": "152501", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 404, + "pk": 59, "fields": { - "parent_game": 463, - "platform": 3, + "parent_game": 59, + "platform": 1, "release_date": "2017-02-24", "db_id": "153503", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 405, + "pk": 60, "fields": { - "parent_game": 464, - "platform": 3, + "parent_game": 60, + "platform": 1, "release_date": "2012-10-18", "db_id": "120864", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 406, + "pk": 61, "fields": { - "parent_game": 465, - "platform": 3, + "parent_game": 61, + "platform": 1, "release_date": null, "db_id": "", - "update": true + "update": true, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 407, + "pk": 62, "fields": { - "parent_game": 466, - "platform": 3, + "parent_game": 62, + "platform": 1, "release_date": "2016-10-25", "db_id": "149096", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 408, + "pk": 63, "fields": { - "parent_game": 467, - "platform": 3, + "parent_game": 63, + "platform": 1, "release_date": "2016-11-29", "db_id": "84917", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 409, + "pk": 64, "fields": { - "parent_game": 468, - "platform": 3, + "parent_game": 64, + "platform": 1, "release_date": "2016-06-06", "db_id": "148061", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 410, + "pk": 65, "fields": { - "parent_game": 469, - "platform": 3, + "parent_game": 65, + "platform": 1, "release_date": "2016-03-11", "db_id": "146167", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 411, + "pk": 66, "fields": { - "parent_game": 470, - "platform": 3, + "parent_game": 66, + "platform": 1, "release_date": "2015-12-01", "db_id": "142149", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_database.gameversion", - "pk": 412, + "pk": 67, "fields": { - "parent_game": 471, - "platform": 3, + "parent_game": 67, + "platform": 1, "release_date": "2017-08-31", "db_id": "156200", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 413, - "fields": { - "parent_game": 472, - "platform": 3, - "release_date": "2013-04-09", - "db_id": "126551", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 414, - "fields": { - "parent_game": 473, - "platform": 3, - "release_date": "2015-05-19", - "db_id": "135013", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 415, - "fields": { - "parent_game": 474, - "platform": 3, - "release_date": "2017-02-23", - "db_id": "151322", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 416, - "fields": { - "parent_game": 475, - "platform": 3, - "release_date": "2017-10-13", - "db_id": "154803", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 417, - "fields": { - "parent_game": 476, - "platform": 3, - "release_date": "2017-07-11", - "db_id": "148127", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 418, - "fields": { - "parent_game": 477, - "platform": 3, - "release_date": "2016-07-19", - "db_id": "147259", - "update": false - } -}, -{ - "model": "game_database.gameversion", - "pk": 419, - "fields": { - "parent_game": 478, - "platform": 3, - "release_date": "2018-02-13", - "db_id": "158541", - "update": false + "update": false, + "publishers": [], + "developers": [] } }, { "model": "game_collection.queue", "pk": 1, "fields": { - "user": 2, - "game_version": 364, + "user": 1, + "game_version": 1, "date_adquired": "2018-05-17", "time_played": null } @@ -6977,8 +2302,8 @@ "model": "game_collection.queue", "pk": 2, "fields": { - "user": 2, - "game_version": 365, + "user": 1, + "game_version": 2, "date_adquired": "2018-05-17", "time_played": null } @@ -6987,8 +2312,8 @@ "model": "game_collection.queue", "pk": 3, "fields": { - "user": 2, - "game_version": 366, + "user": 1, + "game_version": 3, "date_adquired": "2017-01-01", "time_played": null } @@ -6997,8 +2322,8 @@ "model": "game_collection.queue", "pk": 4, "fields": { - "user": 2, - "game_version": 367, + "user": 1, + "game_version": 4, "date_adquired": "2018-01-03", "time_played": null } @@ -7007,8 +2332,8 @@ "model": "game_collection.queue", "pk": 5, "fields": { - "user": 2, - "game_version": 368, + "user": 1, + "game_version": 5, "date_adquired": "2016-06-03", "time_played": null } @@ -7017,8 +2342,8 @@ "model": "game_collection.queue", "pk": 6, "fields": { - "user": 2, - "game_version": 369, + "user": 1, + "game_version": 6, "date_adquired": "2018-10-28", "time_played": null } @@ -7027,9 +2352,9 @@ "model": "game_collection.queue", "pk": 7, "fields": { - "user": 2, - "game_version": 370, - "date_adquired": "2018-07-31", + "user": 1, + "game_version": 7, + "date_adquired": "2018-01-18", "time_played": null } }, @@ -7037,9 +2362,9 @@ "model": "game_collection.queue", "pk": 8, "fields": { - "user": 2, - "game_version": 371, - "date_adquired": "2018-05-17", + "user": 1, + "game_version": 8, + "date_adquired": "2018-07-31", "time_played": null } }, @@ -7047,9 +2372,9 @@ "model": "game_collection.queue", "pk": 9, "fields": { - "user": 2, - "game_version": 372, - "date_adquired": "2018-01-03", + "user": 1, + "game_version": 9, + "date_adquired": "2018-05-17", "time_played": null } }, @@ -7057,9 +2382,9 @@ "model": "game_collection.queue", "pk": 10, "fields": { - "user": 2, - "game_version": 388, - "date_adquired": "2018-02-19", + "user": 1, + "game_version": 10, + "date_adquired": "2018-01-03", "time_played": null } }, @@ -7067,9 +2392,9 @@ "model": "game_collection.queue", "pk": 11, "fields": { - "user": 2, - "game_version": 389, - "date_adquired": "2019-03-26", + "user": 1, + "game_version": 42, + "date_adquired": "2018-02-19", "time_played": null } }, @@ -7077,9 +2402,9 @@ "model": "game_collection.queue", "pk": 12, "fields": { - "user": 2, - "game_version": 390, - "date_adquired": "2016-06-03", + "user": 1, + "game_version": 43, + "date_adquired": "2019-03-26", "time_played": null } }, @@ -7087,9 +2412,9 @@ "model": "game_collection.queue", "pk": 13, "fields": { - "user": 2, - "game_version": 391, - "date_adquired": "2018-10-28", + "user": 1, + "game_version": 44, + "date_adquired": "2016-06-03", "time_played": null } }, @@ -7097,9 +2422,9 @@ "model": "game_collection.queue", "pk": 14, "fields": { - "user": 2, - "game_version": 392, - "date_adquired": "2018-01-18", + "user": 1, + "game_version": 45, + "date_adquired": "2018-10-28", "time_played": null } }, @@ -7107,8 +2432,8 @@ "model": "game_collection.playing", "pk": 1, "fields": { - "user": 2, - "game_version": 373, + "user": 1, + "game_version": 11, "date_adquired": "2018-05-17", "time_played": null, "date_started": null @@ -7118,8 +2443,8 @@ "model": "game_collection.playing", "pk": 2, "fields": { - "user": 2, - "game_version": 374, + "user": 1, + "game_version": 12, "date_adquired": "2018-01-03", "time_played": null, "date_started": null @@ -7129,8 +2454,8 @@ "model": "game_collection.playing", "pk": 3, "fields": { - "user": 2, - "game_version": 375, + "user": 1, + "game_version": 13, "date_adquired": "2018-02-19", "time_played": null, "date_started": null @@ -7140,8 +2465,8 @@ "model": "game_collection.playing", "pk": 4, "fields": { - "user": 2, - "game_version": 376, + "user": 1, + "game_version": 14, "date_adquired": "2019-03-26", "time_played": null, "date_started": null @@ -7151,8 +2476,8 @@ "model": "game_collection.playing", "pk": 5, "fields": { - "user": 2, - "game_version": 377, + "user": 1, + "game_version": 15, "date_adquired": "2016-06-03", "time_played": null, "date_started": null @@ -7162,8 +2487,8 @@ "model": "game_collection.playing", "pk": 6, "fields": { - "user": 2, - "game_version": 378, + "user": 1, + "game_version": 16, "date_adquired": "2016-06-03", "time_played": null, "date_started": null @@ -7173,8 +2498,8 @@ "model": "game_collection.playing", "pk": 7, "fields": { - "user": 2, - "game_version": 379, + "user": 1, + "game_version": 17, "date_adquired": "2018-10-28", "time_played": null, "date_started": null @@ -7184,8 +2509,8 @@ "model": "game_collection.playing", "pk": 8, "fields": { - "user": 2, - "game_version": 380, + "user": 1, + "game_version": 18, "date_adquired": "2018-01-18", "time_played": null, "date_started": null @@ -7195,8 +2520,8 @@ "model": "game_collection.playing", "pk": 9, "fields": { - "user": 2, - "game_version": 381, + "user": 1, + "game_version": 19, "date_adquired": "2018-07-31", "time_played": null, "date_started": null @@ -7206,8 +2531,8 @@ "model": "game_collection.playing", "pk": 10, "fields": { - "user": 2, - "game_version": 382, + "user": 1, + "game_version": 20, "date_adquired": "2018-05-17", "time_played": null, "date_started": null @@ -7217,8 +2542,8 @@ "model": "game_collection.playing", "pk": 11, "fields": { - "user": 2, - "game_version": 393, + "user": 1, + "game_version": 46, "date_adquired": "2018-05-17", "time_played": null, "date_started": null @@ -7228,8 +2553,8 @@ "model": "game_collection.playing", "pk": 12, "fields": { - "user": 2, - "game_version": 394, + "user": 1, + "game_version": 47, "date_adquired": "2017-01-01", "time_played": null, "date_started": null @@ -7239,8 +2564,8 @@ "model": "game_collection.playing", "pk": 13, "fields": { - "user": 2, - "game_version": 395, + "user": 1, + "game_version": 48, "date_adquired": "2018-01-03", "time_played": null, "date_started": null @@ -7248,10 +2573,10 @@ }, { "model": "game_collection.finished", - "pk": 472, + "pk": 1, "fields": { - "user": 2, - "game_version": 222, + "user": 1, + "game_version": 21, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7262,10 +2587,10 @@ }, { "model": "game_collection.finished", - "pk": 473, + "pk": 2, "fields": { - "user": 2, - "game_version": 223, + "user": 1, + "game_version": 22, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7276,10 +2601,10 @@ }, { "model": "game_collection.finished", - "pk": 474, + "pk": 3, "fields": { - "user": 2, - "game_version": 224, + "user": 1, + "game_version": 23, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7290,10 +2615,10 @@ }, { "model": "game_collection.finished", - "pk": 475, + "pk": 4, "fields": { - "user": 2, - "game_version": 225, + "user": 1, + "game_version": 24, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -7304,10 +2629,10 @@ }, { "model": "game_collection.finished", - "pk": 476, + "pk": 5, "fields": { - "user": 2, - "game_version": 226, + "user": 1, + "game_version": 25, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7318,10 +2643,10 @@ }, { "model": "game_collection.finished", - "pk": 477, + "pk": 6, "fields": { - "user": 2, - "game_version": 227, + "user": 1, + "game_version": 26, "date_adquired": "2016-07-04", "time_played": null, "date_started": null, @@ -7332,10 +2657,10 @@ }, { "model": "game_collection.finished", - "pk": 478, + "pk": 7, "fields": { - "user": 2, - "game_version": 228, + "user": 1, + "game_version": 27, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7346,10 +2671,10 @@ }, { "model": "game_collection.finished", - "pk": 479, + "pk": 8, "fields": { - "user": 2, - "game_version": 229, + "user": 1, + "game_version": 28, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7360,10 +2685,10 @@ }, { "model": "game_collection.finished", - "pk": 480, + "pk": 9, "fields": { - "user": 2, - "game_version": 230, + "user": 1, + "game_version": 29, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7374,10 +2699,10 @@ }, { "model": "game_collection.finished", - "pk": 481, + "pk": 10, "fields": { - "user": 2, - "game_version": 231, + "user": 1, + "game_version": 30, "date_adquired": "2016-06-30", "time_played": null, "date_started": null, @@ -7388,10 +2713,10 @@ }, { "model": "game_collection.finished", - "pk": 482, + "pk": 11, "fields": { - "user": 2, - "game_version": 177, + "user": 1, + "game_version": 31, "date_adquired": "2016-12-21", "time_played": null, "date_started": null, @@ -7402,10 +2727,10 @@ }, { "model": "game_collection.finished", - "pk": 483, + "pk": 12, "fields": { - "user": 2, - "game_version": 383, + "user": 1, + "game_version": 32, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -7416,10 +2741,10 @@ }, { "model": "game_collection.finished", - "pk": 484, + "pk": 13, "fields": { - "user": 2, - "game_version": 232, + "user": 1, + "game_version": 33, "date_adquired": "2016-11-02", "time_played": null, "date_started": null, @@ -7430,10 +2755,10 @@ }, { "model": "game_collection.finished", - "pk": 485, + "pk": 14, "fields": { - "user": 2, - "game_version": 233, + "user": 1, + "game_version": 34, "date_adquired": "2016-07-04", "time_played": null, "date_started": null, @@ -7444,10 +2769,10 @@ }, { "model": "game_collection.finished", - "pk": 486, + "pk": 15, "fields": { - "user": 2, - "game_version": 234, + "user": 1, + "game_version": 35, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -7458,10 +2783,10 @@ }, { "model": "game_collection.finished", - "pk": 487, + "pk": 16, "fields": { - "user": 2, - "game_version": 235, + "user": 1, + "game_version": 36, "date_adquired": "2015-06-14", "time_played": null, "date_started": null, @@ -7472,10 +2797,10 @@ }, { "model": "game_collection.finished", - "pk": 488, + "pk": 17, "fields": { - "user": 2, - "game_version": 236, + "user": 1, + "game_version": 37, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -7484,12 +2809,40 @@ "playstyle": "" } }, +{ + "model": "game_collection.finished", + "pk": 18, + "fields": { + "user": 1, + "game_version": 50, + "date_adquired": "2016-08-27", + "time_played": null, + "date_started": null, + "date_finished": "2016-12-21", + "time_to_finish": null, + "playstyle": "" + } +}, +{ + "model": "game_collection.finished", + "pk": 19, + "fields": { + "user": 1, + "game_version": 51, + "date_adquired": "2016-07-04", + "time_played": null, + "date_started": null, + "date_finished": "2016-12-22", + "time_to_finish": null, + "playstyle": "" + } +}, { "model": "game_collection.played", "pk": 1, "fields": { - "user": 2, - "game_version": 384, + "user": 1, + "game_version": 38, "date_adquired": "2014-09-23", "time_played": null, "date_started": null, @@ -7500,8 +2853,8 @@ "model": "game_collection.played", "pk": 2, "fields": { - "user": 2, - "game_version": 385, + "user": 1, + "game_version": 39, "date_adquired": "2014-09-23", "time_played": null, "date_started": null, @@ -7512,8 +2865,8 @@ "model": "game_collection.played", "pk": 3, "fields": { - "user": 2, - "game_version": 386, + "user": 1, + "game_version": 40, "date_adquired": null, "time_played": null, "date_started": null, @@ -7524,8 +2877,8 @@ "model": "game_collection.played", "pk": 4, "fields": { - "user": 2, - "game_version": 387, + "user": 1, + "game_version": 41, "date_adquired": null, "time_played": null, "date_started": null, @@ -7536,8 +2889,8 @@ "model": "game_collection.abandoned", "pk": 1, "fields": { - "user": 2, - "game_version": 396, + "user": 1, + "game_version": 49, "date_adquired": null, "time_played": null, "date_started": null, @@ -7548,556 +2901,221 @@ "model": "game_collection.wishlist", "pk": 1, "fields": { - "user": 2, - "game_version": 397, - "date_added": "2019-06-25" + "user": 1, + "game_version": 52, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 2, "fields": { - "user": 2, - "game_version": 398, - "date_added": "2019-06-25" + "user": 1, + "game_version": 53, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 3, "fields": { - "user": 2, - "game_version": 399, - "date_added": "2019-06-25" + "user": 1, + "game_version": 54, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 4, "fields": { - "user": 2, - "game_version": 400, - "date_added": "2019-06-25" + "user": 1, + "game_version": 55, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 5, "fields": { - "user": 2, - "game_version": 401, - "date_added": "2019-06-25" + "user": 1, + "game_version": 56, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 6, "fields": { - "user": 2, - "game_version": 402, - "date_added": "2019-06-25" + "user": 1, + "game_version": 57, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 7, "fields": { - "user": 2, - "game_version": 403, - "date_added": "2019-06-25" + "user": 1, + "game_version": 58, + "date_added": "2019-11-17" } }, { "model": "game_collection.wishlist", "pk": 8, "fields": { - "user": 2, - "game_version": 404, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.wishlist", - "pk": 9, - "fields": { - "user": 2, - "game_version": 413, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.wishlist", - "pk": 10, - "fields": { - "user": 2, - "game_version": 414, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.wishlist", - "pk": 11, - "fields": { - "user": 2, - "game_version": 415, - "date_added": "2019-06-25" + "user": 1, + "game_version": 59, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 1, "fields": { - "user": 2, - "game_version": 405, - "date_added": "2019-06-25" + "user": 1, + "game_version": 60, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 2, "fields": { - "user": 2, - "game_version": 406, - "date_added": "2019-06-25" + "user": 1, + "game_version": 61, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 3, "fields": { - "user": 2, - "game_version": 407, - "date_added": "2019-06-25" + "user": 1, + "game_version": 62, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 4, "fields": { - "user": 2, - "game_version": 408, - "date_added": "2019-06-25" + "user": 1, + "game_version": 63, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 5, "fields": { - "user": 2, - "game_version": 409, - "date_added": "2019-06-25" + "user": 1, + "game_version": 64, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 6, "fields": { - "user": 2, - "game_version": 410, - "date_added": "2019-06-25" + "user": 1, + "game_version": 65, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 7, "fields": { - "user": 2, - "game_version": 411, - "date_added": "2019-06-25" + "user": 1, + "game_version": 66, + "date_added": "2019-11-17" } }, { "model": "game_collection.interested", "pk": 8, "fields": { - "user": 2, - "game_version": 412, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.interested", - "pk": 9, - "fields": { - "user": 2, - "game_version": 416, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.interested", - "pk": 10, - "fields": { - "user": 2, - "game_version": 417, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.interested", - "pk": 11, - "fields": { - "user": 2, - "game_version": 418, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.interested", - "pk": 12, - "fields": { - "user": 2, - "game_version": 419, - "date_added": "2019-06-25" - } -}, -{ - "model": "game_collection.tag", - "pk": 64, - "fields": { - "user": 2, - "name": "Steam", - "tag_group": null, - "game_version": [ - 174, - 175, - 176, - 177, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 239, - 240, - 241, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 262, - 264, - 265, - 266, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 297, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 65, - "fields": { - "user": 2, - "name": "Uplay", - "tag_group": null, - "game_version": [ - 178, - 211, - 242, - 324, - 325, - 326, - 327, - 363 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 66, - "fields": { - "user": 2, - "name": "Origin", - "tag_group": null, - "game_version": [ - 261, - 263, - 308, - 309, - 310, - 311 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 67, - "fields": { - "user": 2, - "name": "Battle.net", - "tag_group": null, - "game_version": [ - 277, - 307 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 68, - "fields": { - "user": 2, - "name": "Android", - "tag_group": null, - "game_version": [ - 288 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 69, - "fields": { - "user": 2, - "name": "Epic", - "tag_group": null, - "game_version": [ - 296 - ] - } -}, -{ - "model": "game_collection.tag", - "pk": 70, - "fields": { - "user": 2, - "name": "Twitch", - "tag_group": null, - "game_version": [ - 298 - ] + "user": 1, + "game_version": 67, + "date_added": "2019-11-17" } }, { "model": "game_collection.tag", - "pk": 71, + "pk": 1, "fields": { - "user": 2, + "user": 1, "name": "", "tag_group": null, "game_version": [ - 177, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 340, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419 + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67 ] } } From 21edeb25d16745fe8cf23d336d3174e12d176164 Mon Sep 17 00:00:00 2001 From: Carlos Date: Mon, 18 Nov 2019 14:09:46 +0100 Subject: [PATCH 06/24] Game view --- game_database/migrations/0001_initial.py | 75 ------------------- .../migrations/0002_auto_20191117_1250.py | 39 ---------- gamehoarder_site/templates/game_view.html | 10 +++ 3 files changed, 10 insertions(+), 114 deletions(-) delete mode 100644 game_database/migrations/0001_initial.py delete mode 100644 game_database/migrations/0002_auto_20191117_1250.py create mode 100644 gamehoarder_site/templates/game_view.html diff --git a/game_database/migrations/0001_initial.py b/game_database/migrations/0001_initial.py deleted file mode 100644 index 5f52f6f..0000000 --- a/game_database/migrations/0001_initial.py +++ /dev/null @@ -1,75 +0,0 @@ -# Generated by Django 2.2.2 on 2019-06-24 09:42 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Game', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(blank=True, max_length=64, verbose_name='title')), - ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), - ('main_time', models.FloatField(default=0, verbose_name='main time')), - ('extra_time', models.FloatField(default=0, verbose_name='extra time')), - ('completion_time', models.FloatField(default=0, verbose_name='completion time')), - ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), - ('update', models.BooleanField(default=True, verbose_name='update')), - ], - options={ - 'verbose_name': 'Game', - 'verbose_name_plural': 'Games', - }, - ), - migrations.CreateModel( - name='Genre', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), - ], - options={ - 'verbose_name': 'Genre', - 'verbose_name_plural': 'Genres', - }, - ), - migrations.CreateModel( - name='Platform', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), - ], - options={ - 'verbose_name': 'Platform', - 'verbose_name_plural': 'Platforms', - }, - ), - migrations.CreateModel( - name='GameVersion', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), - ('db_id', models.CharField(max_length=16)), - ('update', models.BooleanField(default=True)), - ( - 'parent_game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Game')), - ('platform', - models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Platform')), - ], - options={ - 'verbose_name': 'Game Version', - 'verbose_name_plural': 'Game Versions', - }, - ), - migrations.AddField( - model_name='game', - name='genres', - field=models.ManyToManyField(to='game_database.Genre', verbose_name='genres'), - ), - ] diff --git a/game_database/migrations/0002_auto_20191117_1250.py b/game_database/migrations/0002_auto_20191117_1250.py deleted file mode 100644 index 9fe0b1c..0000000 --- a/game_database/migrations/0002_auto_20191117_1250.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 2.2.2 on 2019-11-17 11:50 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('game_database', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='platform', - name='db_id', - field=models.CharField(default=1, max_length=16, unique=True, verbose_name='DB ID'), - preserve_default=False, - ), - migrations.AddField( - model_name='platform', - name='description', - field=models.TextField(blank=True, verbose_name='description'), - ), - migrations.AddField( - model_name='platform', - name='img_url', - field=models.CharField(blank=True, max_length=128, verbose_name='image url'), - ), - migrations.AddField( - model_name='platform', - name='update', - field=models.BooleanField(default=True), - ), - migrations.AlterField( - model_name='platform', - name='name', - field=models.CharField(blank=True, max_length=64, verbose_name='name'), - ), - ] diff --git a/gamehoarder_site/templates/game_view.html b/gamehoarder_site/templates/game_view.html new file mode 100644 index 0000000..f7e5884 --- /dev/null +++ b/gamehoarder_site/templates/game_view.html @@ -0,0 +1,10 @@ + + + + + $Title$ + + +$END$ + + \ No newline at end of file From 0965d47cc5f137333659733f6b19d4f8ec1b3e45 Mon Sep 17 00:00:00 2001 From: Carlos Date: Mon, 18 Nov 2019 14:15:11 +0100 Subject: [PATCH 07/24] Missing --- game_database/migrations/0001_initial.py | 95 ++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 game_database/migrations/0001_initial.py diff --git a/game_database/migrations/0001_initial.py b/game_database/migrations/0001_initial.py new file mode 100644 index 0000000..b058b20 --- /dev/null +++ b/game_database/migrations/0001_initial.py @@ -0,0 +1,95 @@ +# Generated by Django 2.2.2 on 2019-11-17 18:25 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Company', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ], + options={ + 'verbose_name': 'Company', + 'verbose_name_plural': 'Companies', + }, + ), + migrations.CreateModel( + name='Game', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(blank=True, max_length=64, verbose_name='title')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ('main_time', models.FloatField(default=0, verbose_name='main time')), + ('extra_time', models.FloatField(default=0, verbose_name='extra time')), + ('completion_time', models.FloatField(default=0, verbose_name='completion time')), + ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('img_url', models.CharField(blank=True, max_length=128, verbose_name='image url')), + ('update', models.BooleanField(default=True, verbose_name='update')), + ], + options={ + 'verbose_name': 'Game', + 'verbose_name_plural': 'Games', + }, + ), + migrations.CreateModel( + name='Genre', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, unique=True, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ], + options={ + 'verbose_name': 'Genre', + 'verbose_name_plural': 'Genres', + }, + ), + migrations.CreateModel( + name='Platform', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(blank=True, max_length=64, verbose_name='name')), + ('db_id', models.CharField(max_length=16, unique=True, verbose_name='DB ID')), + ('description', models.TextField(blank=True, verbose_name='description')), + ('img_url', models.CharField(blank=True, max_length=128, verbose_name='image url')), + ('update', models.BooleanField(default=True)), + ], + options={ + 'verbose_name': 'Platform', + 'verbose_name_plural': 'Platforms', + }, + ), + migrations.CreateModel( + name='GameVersion', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('release_date', models.DateField(blank=True, null=True, verbose_name='release date')), + ('db_id', models.CharField(max_length=16)), + ('update', models.BooleanField(default=True)), + ('developers', models.ManyToManyField(related_name='developers', to='game_database.Company', verbose_name='developers')), + ('parent_game', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Game')), + ('platform', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='game_database.Platform')), + ('publishers', models.ManyToManyField(related_name='publishers', to='game_database.Company', verbose_name='publishers')), + ], + options={ + 'verbose_name': 'Game Version', + 'verbose_name_plural': 'Game Versions', + }, + ), + migrations.AddField( + model_name='game', + name='genres', + field=models.ManyToManyField(to='game_database.Genre', verbose_name='genres'), + ), + ] From df109bb2e7bb4fef468c3dfb751dfc77fc675020 Mon Sep 17 00:00:00 2001 From: RafaelRomon Date: Mon, 18 Nov 2019 14:38:15 +0100 Subject: [PATCH 08/24] Implemented publishers and developers --- game_database/functions.py | 53 ++++++++++++++----- .../migrations/0002_auto_20191118_1405.py | 38 +++++++++++++ game_database/models.py | 12 ++++- requirements.txt | 1 - 4 files changed, 89 insertions(+), 15 deletions(-) create mode 100644 game_database/migrations/0002_auto_20191118_1405.py diff --git a/game_database/functions.py b/game_database/functions.py index 9e1f616..ac6f6a1 100644 --- a/game_database/functions.py +++ b/game_database/functions.py @@ -249,6 +249,30 @@ def update_game(game): if "original_url" in data["image"]: game.img_url = data["image"]["original_url"] + if "publishers" in data: + game.publishers.clear() + + if data["publishers"] is not None: + for company in data["publishers"]: + company_id = company["id"] + + if Company.objects.filter(db_id=company_id).exists(): + game.publishers.add(Company.objects.get(db_id=company_id)) + else: + game.publishers.add(Company.objects.create(db_id=company_id, name=company["name"])) + + if "developers" in data: + game.developers.clear() + + if data["developers"] is not None: + for company in data["developers"]: + company_id = company["id"] + + if Company.objects.filter(db_id=company_id).exists(): + game.developers.add(Company.objects.get(db_id=company_id)) + else: + game.developers.add(Company.objects.create(db_id=company_id, name=company["name"])) + game.update = False game.save() @@ -264,6 +288,9 @@ def update_game_version(game_version, data=None): else: data = None + if "name" in data: + game_version.name = data["name"] + if "release_date" in data: string_date = data["release_date"] if string_date is not None: @@ -272,24 +299,26 @@ def update_game_version(game_version, data=None): if "publishers" in data: game_version.publishers.clear() - for company in data["publishers"]: - company_id = company["id"] + if data["publishers"] is not None: + for company in data["publishers"]: + company_id = company["id"] - if Company.objects.filter(db_id=company_id).exists(): - game_version.publishers.add(Company.objects.get(db_id=company_id)) - else: - game_version.publishers.add(Company.objects.create(db_id=company_id, name=company["name"])) + if Company.objects.filter(db_id=company_id).exists(): + game_version.publishers.add(Company.objects.get(db_id=company_id)) + else: + game_version.publishers.add(Company.objects.create(db_id=company_id, name=company["name"])) if "developers" in data: game_version.developers.clear() - for company in data["publishers"]: - company_id = company["id"] + if data["developers"] is not None: + for company in data["developers"]: + company_id = company["id"] - if Company.objects.filter(db_id=company_id).exists(): - game_version.developers.add(Company.objects.get(db_id=company_id)) - else: - game_version.developers.add(Company.objects.create(db_id=company_id, name=company["name"])) + if Company.objects.filter(db_id=company_id).exists(): + game_version.developers.add(Company.objects.get(db_id=company_id)) + else: + game_version.developers.add(Company.objects.create(db_id=company_id, name=company["name"])) game_version.update = False game_version.save() diff --git a/game_database/migrations/0002_auto_20191118_1405.py b/game_database/migrations/0002_auto_20191118_1405.py new file mode 100644 index 0000000..b8dde0c --- /dev/null +++ b/game_database/migrations/0002_auto_20191118_1405.py @@ -0,0 +1,38 @@ +# Generated by Django 2.2.7 on 2019-11-18 13:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('game_database', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='game', + name='developers', + field=models.ManyToManyField(blank=True, related_name='game_developers', to='game_database.Company', verbose_name='developers'), + ), + migrations.AddField( + model_name='game', + name='publishers', + field=models.ManyToManyField(blank=True, related_name='game_publishers', to='game_database.Company', verbose_name='publishers'), + ), + migrations.AddField( + model_name='gameversion', + name='name', + field=models.CharField(blank=True, max_length=64, verbose_name='name'), + ), + migrations.AlterField( + model_name='gameversion', + name='developers', + field=models.ManyToManyField(blank=True, related_name='version_developers', to='game_database.Company', verbose_name='developers'), + ), + migrations.AlterField( + model_name='gameversion', + name='publishers', + field=models.ManyToManyField(blank=True, related_name='version_publishers', to='game_database.Company', verbose_name='publishers'), + ), + ] diff --git a/game_database/models.py b/game_database/models.py index c316b00..340ec3a 100644 --- a/game_database/models.py +++ b/game_database/models.py @@ -39,6 +39,11 @@ class Game(models.Model): description = models.TextField(verbose_name=_("description"), blank=True) img_url = models.CharField(max_length=128, verbose_name=_("image url"), blank=True) + publishers = models.ManyToManyField(Company, verbose_name=_("publishers"), related_name="game_publishers", + blank=True) + developers = models.ManyToManyField(Company, verbose_name=_("developers"), related_name="game_developers", + blank=True) + genres = models.ManyToManyField(Genre, verbose_name=_("genres")) update = models.BooleanField(default=True, verbose_name=_("update")) @@ -75,12 +80,15 @@ class GameVersion(models.Model): parent_game = models.ForeignKey(Game, on_delete=models.CASCADE) platform = models.ForeignKey(Platform, on_delete=models.CASCADE) + name = models.CharField(max_length=64, verbose_name=_("name"), blank=True) release_date = models.DateField(blank=True, null=True, verbose_name=_("release date")) db_id = models.CharField(max_length=16) - publishers = models.ManyToManyField(Company, verbose_name=_("publishers"), related_name="publishers") - developers = models.ManyToManyField(Company, verbose_name=_("developers"), related_name="developers") + publishers = models.ManyToManyField(Company, verbose_name=_("publishers"), related_name="version_publishers", + blank=True) + developers = models.ManyToManyField(Company, verbose_name=_("developers"), related_name="version_developers", + blank=True) update = models.BooleanField(default=True) diff --git a/requirements.txt b/requirements.txt index 2eac595..d9920e5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ Pillow Django pytz mysqlclient -setuptools unidecode howlongtobeatpy requests From 76fbb97c52ee5602a696cb1a8a22cd6630b233ed Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Mon, 18 Nov 2019 17:44:23 +0100 Subject: [PATCH 09/24] added price in collection --- .../migrations/0002_auto_20191118_1743.py | 38 +++++++++++++++++++ game_collection/models.py | 1 + 2 files changed, 39 insertions(+) create mode 100644 game_collection/migrations/0002_auto_20191118_1743.py diff --git a/game_collection/migrations/0002_auto_20191118_1743.py b/game_collection/migrations/0002_auto_20191118_1743.py new file mode 100644 index 0000000..0c602f1 --- /dev/null +++ b/game_collection/migrations/0002_auto_20191118_1743.py @@ -0,0 +1,38 @@ +# Generated by Django 2.2.2 on 2019-11-18 16:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('game_collection', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='abandoned', + name='price', + field=models.FloatField(default=0.0, verbose_name='price'), + ), + migrations.AddField( + model_name='finished', + name='price', + field=models.FloatField(default=0.0, verbose_name='price'), + ), + migrations.AddField( + model_name='played', + name='price', + field=models.FloatField(default=0.0, verbose_name='price'), + ), + migrations.AddField( + model_name='playing', + name='price', + field=models.FloatField(default=0.0, verbose_name='price'), + ), + migrations.AddField( + model_name='queue', + name='price', + field=models.FloatField(default=0.0, verbose_name='price'), + ), + ] diff --git a/game_collection/models.py b/game_collection/models.py index 4256605..50b4cdf 100644 --- a/game_collection/models.py +++ b/game_collection/models.py @@ -11,6 +11,7 @@ class Collection(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=_("user")) game_version = models.ForeignKey(GameVersion, on_delete=models.PROTECT, verbose_name=_("game version")) + price = models.FloatField(default=0.0, verbose_name=_("price")) date_adquired = models.DateField(blank=True, null=True, verbose_name=_("date adquired")) time_played = models.FloatField(blank=True, null=True, verbose_name=_("time played")) From a367f95ace8a4a632daca1bcc73a09411b2af03e Mon Sep 17 00:00:00 2001 From: rafaelromon Date: Mon, 18 Nov 2019 18:09:54 +0100 Subject: [PATCH 10/24] Finished adding more information --- game_collection/tasks.py | 9 +- utils/collection_example.csv | 110 +- utils/test_db.json | 2526 ++++++++++++++++++++++++++++------ 3 files changed, 2145 insertions(+), 500 deletions(-) diff --git a/game_collection/tasks.py b/game_collection/tasks.py index 17395d2..d6cd128 100644 --- a/game_collection/tasks.py +++ b/game_collection/tasks.py @@ -33,10 +33,11 @@ def verify_collection_task(self, csv_file): "platform": row[4].strip(), "name": row[5].strip().replace("'", ""), "id": row[6].strip(), - "time_played": row[7].strip(), - "time_to_finish": row[8].strip(), - "playstyle": row[9].strip(), - "tags": row[10].strip() + "price": row[7].strip(), + "time_played": row[8].strip(), + "time_to_finish": row[9].strip(), + "playstyle": row[10].strip(), + "tags": row[11].strip() } if title["id"] == "": diff --git a/utils/collection_example.csv b/utils/collection_example.csv index 4248823..2459a64 100644 --- a/utils/collection_example.csv +++ b/utils/collection_example.csv @@ -1,55 +1,55 @@ -List,Date Adquired,Date Started,Second Date,Platform,Game,Giantbomb id,Time Played,Time Finish,Playstyle,Tags -Queue,2018-05-17,,,PC,8-bit Armies,,,,, -Queue,2018-05-17,,,PC,Acceleration of SUGURI 2,,,,, -Queue,2017-01-01,,,PC,Amnesia: The Dark Descent,,,,, -Queue,2018-01-03,,,PC,Aragami,,,,, -Queue,2018-02-19,,,PC,Arma 3,,,,, -Queue,2019-03-26,,,PC,Ashes of the Singularity: Escalation,,,,, -Queue,2016-06-03,,,PC,Assassin's Creed Chronicles: China,,,,, -Queue,2016-06-03,,,PC,Assassin's Creed Rogue ,,,,, -Queue,2018-10-28,,,PC,Batman Arkham Origins,,,,, -Queue,2018-10-28,,,PC,Batman: Arkham Knight,,,,, -Queue,2018-01-18,,,PC,Battlevoid: Harbinger,,,,, -Queue,2018-07-31,,,PC,Bayonetta,,,,, -Queue,2018-05-17,,,PC,Bear With Me,,,,, -Queue,2018-01-03,,,PC,Beholder,,,,, -Playing,2018-05-17,,,PC,Faster Than Light,,,,, -Playing,2018-05-17,,,PC,Homeworld Remastered Collection,,,,, -Playing,2017-01-01,,,PC,Valkyrie Chronicles,,,,, -Playing,2018-01-03,,,PC,Door Kickers,,,,, -Playing,2018-02-19,,,PC,Downwell,,,,, -Playing,2019-03-26,,,PC,TIS-100,,,,, -Playing,2016-06-03,,,PC,Volgarr the Viking,,,,, -Playing,2016-06-03,,,PC,Nuclear Throne,,,,, -Playing,2018-10-28,,,PC,Darkest Dungeon,,,,, -Playing,2018-10-28,,,PC,Chronotrigger DS,,,,, -Playing,2018-01-18,,,PC,Wolfenstein 3D,,,,, -Playing,2018-07-31,,,PC,Tooth and Tail,,,,, -Playing,2018-05-17,,,PC,Flinthook,,,,, -Playing,2018-01-03,,,PC,Kingdom: Classic,,,,, -Abandoned,,,,PC,Shadow Warrior Viscera Cleanup,,,,, -Finished,2016-07-03,,2016-07-17,PC,The Stanley Parable,,,,, -Finished,2016-07-03,,2016-07-17,PC,Thomas Was Alone,,,,, -Finished,2016-07-03,,2016-07-19,PC,Brütal Legend,,,,, -Finished,2016-03-06,,2016-07-19,PC,Trine 3: The Artifacts of Power,,,,, -Finished,2016-07-03,,2016-07-29,PC,Metal Gear Solid V: The Phantom Pain,,,,, -Finished,2016-07-04,,2016-08-14,PC,Psychonauts,,,,, -Finished,2016-07-03,,2016-08-16,PC,Batman: Arkham City,,,,, -Finished,2016-07-03,,2016-08-19,PC,Hand of Fate,,,,, -Finished,2016-07-03,,2016-08-22,PC,Metal Gear Rising: Revengeance,,,,, -Finished,2016-06-30,,2016-09-03,PC,Grand Theft Auto V,,,,, -Finished,2016-08-27,,2016-12-21,PC,Galak-Z: The Dimensional,,,,, -Finished,2016-07-04,,2016-12-22,PC,Serious Sam HD: The First Encouter,,,,, -Finished,2016-12-21,,2016-12-26,PC,DOOM,,,,, -Finished,2016-03-06,,2016-12-26,PC,Duet,,,,, -Finished,2016-12-27,,2016-12-30,PC,ABZÜ,,,,, -Finished,2016-11-02,,2017-01-01,PC,Titan Souls,,,,, -Finished,2016-07-04,,2017-01-26,PC,Giana Sisters: Twisted Dreams,,,,, -Finished,2016-03-06,,2017-01-26,PC,Outlast,,,,, -Finished,2015-06-14,,2017-01-27,PC,The Banner Saga,,,,, -Finished,2016-07-03,,2017-01-28,PC,6180 The Moon,,,,, -Played,,,,PC,Incandescent,,,,, -Played,2014-09-23,,,PC,Luftrausers,,,,, -Played,2014-09-23,,,PC,Race The Sun,,,,, -Played,,,,PC,Planetbase,,,,, -Played,,,,PC,Prison Architect,,,,, \ No newline at end of file +List,Date Adquired,Date Started,Second Date,Platform,Game,Giantbomb id,Price,Time Played,Time Finish,Playstyle,Tags +Queue,2018-05-17,,,PC,8-bit Armies,,,,,, +Queue,2018-05-17,,,PC,Acceleration of SUGURI 2,,,,,, +Queue,2017-01-01,,,PC,Amnesia: The Dark Descent,,,,,, +Queue,2018-01-03,,,PC,Aragami,,,,,, +Queue,2018-02-19,,,PC,Arma 3,,,,,, +Queue,2019-03-26,,,PC,Ashes of the Singularity: Escalation,,,,,, +Queue,2016-06-03,,,PC,Assassin's Creed Chronicles: China,,,,,, +Queue,2016-06-03,,,PC,Assassin's Creed Rogue ,,,,,, +Queue,2018-10-28,,,PC,Batman Arkham Origins,,,,,, +Queue,2018-10-28,,,PC,Batman: Arkham Knight,,,,,, +Queue,2018-01-18,,,PC,Battlevoid: Harbinger,,,,,, +Queue,2018-07-31,,,PC,Bayonetta,,,,,, +Queue,2018-05-17,,,PC,Bear With Me,,,,,, +Queue,2018-01-03,,,PC,Beholder,,,,,, +Playing,2018-05-17,,,PC,Faster Than Light,,,,,, +Playing,2018-05-17,,,PC,Homeworld Remastered Collection,,,,,, +Playing,2017-01-01,,,PC,Valkyrie Chronicles,,,,,, +Playing,2018-01-03,,,PC,Door Kickers,,,,,, +Playing,2018-02-19,,,PC,Downwell,,,,,, +Playing,2019-03-26,,,PC,TIS-100,,,,,, +Playing,2016-06-03,,,PC,Volgarr the Viking,,,,,, +Playing,2016-06-03,,,PC,Nuclear Throne,,,,,, +Playing,2018-10-28,,,PC,Darkest Dungeon,,,,,, +Playing,2018-10-28,,,PC,Chronotrigger DS,,,,,, +Playing,2018-01-18,,,PC,Wolfenstein 3D,,,,,, +Playing,2018-07-31,,,PC,Tooth and Tail,,,,,, +Playing,2018-05-17,,,PC,Flinthook,,,,,, +Playing,2018-01-03,,,PC,Kingdom: Classic,,,,,, +Abandoned,,,,PC,Shadow Warrior Viscera Cleanup,,,,,, +Finished,2016-07-03,,2016-07-17,PC,The Stanley Parable,,,,,, +Finished,2016-07-03,,2016-07-17,PC,Thomas Was Alone,,,,,, +Finished,2016-07-03,,2016-07-19,PC,Brütal Legend,,,,,, +Finished,2016-03-06,,2016-07-19,PC,Trine 3: The Artifacts of Power,,,,,, +Finished,2016-07-03,,2016-07-29,PC,Metal Gear Solid V: The Phantom Pain,,,,,, +Finished,2016-07-04,,2016-08-14,PC,Psychonauts,,,,,, +Finished,2016-07-03,,2016-08-16,PC,Batman: Arkham City,,,,,, +Finished,2016-07-03,,2016-08-19,PC,Hand of Fate,,,,,, +Finished,2016-07-03,,2016-08-22,PC,Metal Gear Rising: Revengeance,,,,,, +Finished,2016-06-30,,2016-09-03,PC,Grand Theft Auto V,,,,,, +Finished,2016-08-27,,2016-12-21,PC,Galak-Z: The Dimensional,,,,,, +Finished,2016-07-04,,2016-12-22,PC,Serious Sam HD: The First Encouter,,,,,, +Finished,2016-12-21,,2016-12-26,PC,DOOM,,,,,, +Finished,2016-03-06,,2016-12-26,PC,Duet,,,,,, +Finished,2016-12-27,,2016-12-30,PC,ABZÜ,,,,,, +Finished,2016-11-02,,2017-01-01,PC,Titan Souls,,,,,, +Finished,2016-07-04,,2017-01-26,PC,Giana Sisters: Twisted Dreams,,,,,, +Finished,2016-03-06,,2017-01-26,PC,Outlast,,,,,, +Finished,2015-06-14,,2017-01-27,PC,The Banner Saga,,,,,, +Finished,2016-07-03,,2017-01-28,PC,6180 The Moon,,,,,, +Played,,,,PC,Incandescent,,,,,, +Played,2014-09-23,,,PC,Luftrausers,,,,,, +Played,2014-09-23,,,PC,Race The Sun,,,,,, +Played,,,,PC,Planetbase,,,,,, +Played,,,,PC,Prison Architect,,,,,, \ No newline at end of file diff --git a/utils/test_db.json b/utils/test_db.json index 1d96d06..7239c64 100644 --- a/utils/test_db.json +++ b/utils/test_db.json @@ -2,8 +2,25 @@ { "model": "auth.user", "fields": { - "password": "pbkdf2_sha256$150000$vYaPJxTflWWe$lEsMH/DdVHW1sgXHgQbapSLeR0TezAbVR40k3gOT75k=", - "last_login": "2019-11-17T18:30:49.135Z", + "password": "pbkdf2_sha256$150000$cfo1FECG0VGz$Xk6C6O87dvtliqM3CI/6uH7KfxN2S5qIb2fUzw5L3xg=", + "last_login": null, + "is_superuser": true, + "username": "jader", + "first_name": "", + "last_name": "", + "email": "", + "is_staff": true, + "is_active": true, + "date_joined": "2019-11-18T16:58:58.848Z", + "groups": [], + "user_permissions": [] + } +}, +{ + "model": "auth.user", + "fields": { + "password": "pbkdf2_sha256$150000$57AQQOfMT8dq$0uaHSqGwRJmcZlfsn9UnwXjHs34MxXAPwfRvkv592mU=", + "last_login": "2019-11-18T17:01:25.290Z", "is_superuser": true, "username": "jailander", "first_name": "", @@ -11,153 +28,1177 @@ "email": "", "is_staff": true, "is_active": true, - "date_joined": "2019-11-17T18:29:35.531Z", + "date_joined": "2019-11-18T17:01:22.222Z", "groups": [], "user_permissions": [] } }, { - "model": "game_database.genre", - "pk": 1, + "model": "game_database.genre", + "pk": 1, + "fields": { + "name": "Strategy", + "db_id": "2" + } +}, +{ + "model": "game_database.genre", + "pk": 2, + "fields": { + "name": "Real-Time Strategy", + "db_id": "12" + } +}, +{ + "model": "game_database.genre", + "pk": 3, + "fields": { + "name": "Fighting", + "db_id": "9" + } +}, +{ + "model": "game_database.genre", + "pk": 4, + "fields": { + "name": "Shooter", + "db_id": "11" + } +}, +{ + "model": "game_database.genre", + "pk": 5, + "fields": { + "name": "Adventure", + "db_id": "4" + } +}, +{ + "model": "game_database.genre", + "pk": 6, + "fields": { + "name": "Puzzle", + "db_id": "18" + } +}, +{ + "model": "game_database.genre", + "pk": 7, + "fields": { + "name": "Action", + "db_id": "1" + } +}, +{ + "model": "game_database.genre", + "pk": 8, + "fields": { + "name": "Platformer", + "db_id": "41" + } +}, +{ + "model": "game_database.genre", + "pk": 9, + "fields": { + "name": "Action-Adventure", + "db_id": "43" + } +}, +{ + "model": "game_database.genre", + "pk": 10, + "fields": { + "name": "Simulation", + "db_id": "7" + } +}, +{ + "model": "game_database.genre", + "pk": 11, + "fields": { + "name": "Shoot 'Em Up", + "db_id": "48" + } +}, +{ + "model": "game_database.genre", + "pk": 12, + "fields": { + "name": "Role-Playing", + "db_id": "5" + } +}, +{ + "model": "game_database.genre", + "pk": 13, + "fields": { + "name": "First-Person Shooter", + "db_id": "32" + } +}, +{ + "model": "game_database.genre", + "pk": 14, + "fields": { + "name": "Card Game", + "db_id": "13" + } +}, +{ + "model": "game_database.genre", + "pk": 15, + "fields": { + "name": "Trivia/Board Game", + "db_id": "14" + } +}, +{ + "model": "game_database.genre", + "pk": 16, + "fields": { + "name": "Driving/Racing", + "db_id": "6" + } +}, +{ + "model": "game_database.genre", + "pk": 17, + "fields": { + "name": "Dual-Joystick Shooter", + "db_id": "31" + } +}, +{ + "model": "game_database.genre", + "pk": 18, + "fields": { + "name": "Brawler", + "db_id": "37" + } +}, +{ + "model": "game_database.company", + "pk": 1, + "fields": { + "name": "Petroglyph Games Inc.", + "db_id": "2946" + } +}, +{ + "model": "game_database.company", + "pk": 2, + "fields": { + "name": "Orange_Juice", + "db_id": "6640" + } +}, +{ + "model": "game_database.company", + "pk": 3, + "fields": { + "name": "Fruitbat Factory", + "db_id": "8815" + } +}, +{ + "model": "game_database.company", + "pk": 4, + "fields": { + "name": "Frictional Games", + "db_id": "2417" + } +}, +{ + "model": "game_database.company", + "pk": 5, + "fields": { + "name": "THQ", + "db_id": "15" + } +}, +{ + "model": "game_database.company", + "pk": 6, + "fields": { + "name": "Merge Games", + "db_id": "9636" + } +}, +{ + "model": "game_database.company", + "pk": 7, + "fields": { + "name": "Lince Works", + "db_id": "12604" + } +}, +{ + "model": "game_database.company", + "pk": 8, + "fields": { + "name": "Ubisoft Entertainment", + "db_id": "82" + } +}, +{ + "model": "game_database.company", + "pk": 9, + "fields": { + "name": "Ubisoft Montreal Studios", + "db_id": "1559" + } +}, +{ + "model": "game_database.company", + "pk": 10, + "fields": { + "name": "Climax Studios", + "db_id": "2267" + } +}, +{ + "model": "game_database.company", + "pk": 11, + "fields": { + "name": "WB Games", + "db_id": "4405" + } +}, +{ + "model": "game_database.company", + "pk": 12, + "fields": { + "name": "Rocksteady Studios Ltd", + "db_id": "2576" + } +}, +{ + "model": "game_database.company", + "pk": 13, + "fields": { + "name": "Iron Galaxy Studios", + "db_id": "6974" + } +}, +{ + "model": "game_database.company", + "pk": 14, + "fields": { + "name": "WB Games Montr\u00e9al", + "db_id": "8238" + } +}, +{ + "model": "game_database.company", + "pk": 15, + "fields": { + "name": "Known Shippable ", + "db_id": "18464" + } +}, +{ + "model": "game_database.company", + "pk": 16, + "fields": { + "name": "Sega", + "db_id": "62" + } +}, +{ + "model": "game_database.company", + "pk": 17, + "fields": { + "name": "Nintendo", + "db_id": "90" + } +}, +{ + "model": "game_database.company", + "pk": 18, + "fields": { + "name": "PlatinumGames", + "db_id": "6319" + } +}, +{ + "model": "game_database.company", + "pk": 19, + "fields": { + "name": "Bee Tribe", + "db_id": "10023" + } +}, +{ + "model": "game_database.company", + "pk": 20, + "fields": { + "name": "Exordium Games ", + "db_id": "12965" + } +}, +{ + "model": "game_database.company", + "pk": 21, + "fields": { + "name": "Alawar Entertainment, Inc.", + "db_id": "8" + } +}, +{ + "model": "game_database.company", + "pk": 22, + "fields": { + "name": "Curve Digital", + "db_id": "6465" + } +}, +{ + "model": "game_database.company", + "pk": 23, + "fields": { + "name": "Warm Lamp Games", + "db_id": "13378" + } +}, +{ + "model": "game_database.company", + "pk": 24, + "fields": { + "name": "Gearbox Software LLC", + "db_id": "1615" + } +}, +{ + "model": "game_database.company", + "pk": 25, + "fields": { + "name": "Relic Entertainment", + "db_id": "1804" + } +}, +{ + "model": "game_database.company", + "pk": 26, + "fields": { + "name": "KillHouse Games", + "db_id": "9761" + } +}, +{ + "model": "game_database.company", + "pk": 27, + "fields": { + "name": "Devolver Digital", + "db_id": "6718" + } +}, +{ + "model": "game_database.company", + "pk": 28, + "fields": { + "name": "Moppin", + "db_id": "10799" + } +}, +{ + "model": "game_database.company", + "pk": 29, + "fields": { + "name": "Zachtronics Industries", + "db_id": "7484" + } +}, +{ + "model": "game_database.company", + "pk": 30, + "fields": { + "name": "Adult Swim Games", + "db_id": "8613" + } +}, +{ + "model": "game_database.company", + "pk": 31, + "fields": { + "name": "Crazy Viking Studios", + "db_id": "8957" + } +}, +{ + "model": "game_database.company", + "pk": 32, + "fields": { + "name": "Vlambeer", + "db_id": "7731" + } +}, +{ + "model": "game_database.company", + "pk": 33, + "fields": { + "name": "Limited Run Games", + "db_id": "13306" + } +}, +{ + "model": "game_database.company", + "pk": 34, + "fields": { + "name": "Red Hook Studios", + "db_id": "9303" + } +}, +{ + "model": "game_database.company", + "pk": 35, + "fields": { + "name": "id Software", + "db_id": "347" + } +}, +{ + "model": "game_database.company", + "pk": 36, + "fields": { + "name": "MacPlay", + "db_id": "981" + } +}, +{ + "model": "game_database.company", + "pk": 37, + "fields": { + "name": "Apogee Software, Ltd.", + "db_id": "346" + } +}, +{ + "model": "game_database.company", + "pk": 38, + "fields": { + "name": "BAM! Entertainment, Inc.", + "db_id": "538" + } +}, +{ + "model": "game_database.company", + "pk": 39, + "fields": { + "name": "Interplay Entertainment Corp.", + "db_id": "580" + } +}, +{ + "model": "game_database.company", + "pk": 40, + "fields": { + "name": "Atari SA", + "db_id": "548" + } +}, +{ + "model": "game_database.company", + "pk": 41, + "fields": { + "name": "Imagineer Co., Ltd.", + "db_id": "374" + } +}, +{ + "model": "game_database.company", + "pk": 42, + "fields": { + "name": "Activision", + "db_id": "78" + } +}, +{ + "model": "game_database.company", + "pk": 43, + "fields": { + "name": "Zenimax Media Inc", + "db_id": "7049" + } +}, +{ + "model": "game_database.company", + "pk": 44, + "fields": { + "name": "Nerve Software, LLC", + "db_id": "1083" + } +}, +{ + "model": "game_database.company", + "pk": 45, + "fields": { + "name": "Pocketwatch Games", + "db_id": "7034" + } +}, +{ + "model": "game_database.company", + "pk": 46, + "fields": { + "name": "Tribute Games", + "db_id": "7751" + } +}, +{ + "model": "game_database.company", + "pk": 47, + "fields": { + "name": "Galactic Cafe", + "db_id": "9034" + } +}, +{ + "model": "game_database.company", + "pk": 48, + "fields": { + "name": "Mike Bithell Games", + "db_id": "10456" + } +}, +{ + "model": "game_database.company", + "pk": 49, + "fields": { + "name": "Electronic Arts", + "db_id": "1" + } +}, +{ + "model": "game_database.company", + "pk": 50, + "fields": { + "name": "Double Fine Productions, Inc.", + "db_id": "2215" + } +}, +{ + "model": "game_database.company", + "pk": 51, + "fields": { + "name": "Frozenbyte, Inc.", + "db_id": "4203" + } +}, +{ + "model": "game_database.company", + "pk": 52, + "fields": { + "name": "Konami", + "db_id": "87" + } +}, +{ + "model": "game_database.company", + "pk": 53, + "fields": { + "name": "Kojima Productions", + "db_id": "2057" + } +}, +{ + "model": "game_database.company", + "pk": 54, + "fields": { + "name": "Konami Los Angeles Studio", + "db_id": "10605" + } +}, +{ + "model": "game_database.company", + "pk": 55, + "fields": { + "name": "Majesco Entertainment", + "db_id": "370" + } +}, +{ + "model": "game_database.company", + "pk": 56, + "fields": { + "name": "The Adventure Company", + "db_id": "353" + } +}, +{ + "model": "game_database.company", + "pk": 57, + "fields": { + "name": "EuroVideo Medien GmbH", + "db_id": "9985" + } +}, +{ + "model": "game_database.company", + "pk": 58, + "fields": { + "name": "Budcat Creations", + "db_id": "4570" + } +}, +{ + "model": "game_database.company", + "pk": 59, + "fields": { + "name": "Defiant Development", + "db_id": "8349" + } +}, +{ + "model": "game_database.company", + "pk": 60, + "fields": { + "name": "8-4, Ltd.", + "db_id": "6484" + } +}, +{ + "model": "game_database.company", + "pk": 61, + "fields": { + "name": "TransGaming Technologies", + "db_id": "5554" + } +}, +{ + "model": "game_database.company", + "pk": 62, + "fields": { + "name": "Digital Hearts Co., Ltd. ", + "db_id": "10645" + } +}, +{ + "model": "game_database.company", + "pk": 63, + "fields": { + "name": "Rockstar Games", + "db_id": "1194" + } +}, +{ + "model": "game_database.company", + "pk": 64, + "fields": { + "name": "Take-Two Interactive Software, Inc.", + "db_id": "450" + } +}, +{ + "model": "game_database.company", + "pk": 65, + "fields": { + "name": "Rockstar North", + "db_id": "1408" + } +}, +{ + "model": "game_database.company", + "pk": 66, + "fields": { + "name": "Bethesda Softworks", + "db_id": "786" + } +}, +{ + "model": "game_database.company", + "pk": 67, + "fields": { + "name": "Certain Affinity", + "db_id": "6279" + } +}, +{ + "model": "game_database.company", + "pk": 68, + "fields": { + "name": "Escalation Studios", + "db_id": "6702" + } +}, +{ + "model": "game_database.company", + "pk": 69, + "fields": { + "name": "Panic Button", + "db_id": "7250" + } +}, +{ + "model": "game_database.company", + "pk": 70, + "fields": { + "name": "Kumobius", + "db_id": "7871" + } +}, +{ + "model": "game_database.company", + "pk": 71, "fields": { - "name": "Strategy", - "db_id": "2" + "name": "Acid Nerve", + "db_id": "10033" } }, { - "model": "game_database.genre", - "pk": 2, + "model": "game_database.company", + "pk": 72, "fields": { - "name": "Real-Time Strategy", - "db_id": "12" + "name": "Black Forest Games", + "db_id": "8302" } }, { - "model": "game_database.genre", - "pk": 3, + "model": "game_database.company", + "pk": 73, "fields": { - "name": "Fighting", - "db_id": "9" + "name": "bitComposer Games", + "db_id": "6797" } }, { - "model": "game_database.genre", - "pk": 4, + "model": "game_database.company", + "pk": 74, "fields": { - "name": "Shooter", - "db_id": "11" + "name": "Red Barrels", + "db_id": "8337" } }, { - "model": "game_database.genre", - "pk": 5, + "model": "game_database.company", + "pk": 75, "fields": { - "name": "Adventure", - "db_id": "4" + "name": "Stoic", + "db_id": "7896" } }, { - "model": "game_database.genre", - "pk": 6, + "model": "game_database.company", + "pk": 76, "fields": { - "name": "Puzzle", - "db_id": "18" + "name": "Turtle Cream", + "db_id": "8726" } }, { - "model": "game_database.genre", - "pk": 7, + "model": "game_database.company", + "pk": 77, "fields": { - "name": "Action", - "db_id": "1" + "name": "Rainy Frog", + "db_id": "10408" } }, { - "model": "game_database.genre", - "pk": 8, + "model": "game_database.company", + "pk": 78, "fields": { - "name": "Platformer", - "db_id": "41" + "name": "PokPoong Games", + "db_id": "8727" } }, { - "model": "game_database.genre", - "pk": 9, + "model": "game_database.company", + "pk": 79, "fields": { - "name": "Action-Adventure", - "db_id": "43" + "name": "Flippfly", + "db_id": "8748" } }, { - "model": "game_database.genre", - "pk": 10, + "model": "game_database.company", + "pk": 80, "fields": { - "name": "Simulation", - "db_id": "7" + "name": "Madruga Works", + "db_id": "11557" } }, { - "model": "game_database.genre", - "pk": 11, + "model": "game_database.company", + "pk": 81, "fields": { - "name": "Shoot 'Em Up", - "db_id": "48" + "name": "Introversion Software Limited", + "db_id": "543" } }, { - "model": "game_database.genre", - "pk": 12, + "model": "game_database.company", + "pk": 82, "fields": { - "name": "Role-Playing", - "db_id": "5" + "name": "Double Eleven", + "db_id": "7647" } }, { - "model": "game_database.genre", - "pk": 13, + "model": "game_database.company", + "pk": 83, "fields": { - "name": "First-Person Shooter", - "db_id": "32" + "name": "Bohemia Interactive Studio", + "db_id": "275" } }, { - "model": "game_database.genre", - "pk": 14, + "model": "game_database.company", + "pk": 84, "fields": { - "name": "Card Game", - "db_id": "13" + "name": "Stardock Corporation", + "db_id": "1064" } }, { - "model": "game_database.genre", - "pk": 15, + "model": "game_database.company", + "pk": 85, "fields": { - "name": "Trivia/Board Game", - "db_id": "14" + "name": "Oxide Games", + "db_id": "12055" } }, { - "model": "game_database.genre", - "pk": 16, + "model": "game_database.company", + "pk": 86, "fields": { - "name": "Driving/Racing", - "db_id": "6" + "name": "Ubisoft Bucharest", + "db_id": "2404" } }, { - "model": "game_database.genre", - "pk": 17, + "model": "game_database.company", + "pk": 87, "fields": { - "name": "Brawler", - "db_id": "37" + "name": "Ubisoft Sofia", + "db_id": "6268" } }, { - "model": "game_database.genre", - "pk": 18, + "model": "game_database.company", + "pk": 88, "fields": { - "name": "Dual-Joystick Shooter", - "db_id": "31" + "name": "Ubisoft Singapore", + "db_id": "6770" + } +}, +{ + "model": "game_database.company", + "pk": 89, + "fields": { + "name": "Ubisoft Quebec", + "db_id": "3831" + } +}, +{ + "model": "game_database.company", + "pk": 90, + "fields": { + "name": "Ubisoft Chengdu", + "db_id": "9915" + } +}, +{ + "model": "game_database.company", + "pk": 91, + "fields": { + "name": "Ubisoft Milan Studio", + "db_id": "621" + } +}, +{ + "model": "game_database.company", + "pk": 92, + "fields": { + "name": "Subset Games", + "db_id": "8016" + } +}, +{ + "model": "game_database.company", + "pk": 93, + "fields": { + "name": "Telltale Games", + "db_id": "397" + } +}, +{ + "model": "game_database.company", + "pk": 94, + "fields": { + "name": "Outsource Media (OMUK)", + "db_id": "10727" + } +}, +{ + "model": "game_database.company", + "pk": 95, + "fields": { + "name": "Numinous Games", + "db_id": "9104" + } +}, +{ + "model": "game_database.company", + "pk": 96, + "fields": { + "name": "Wargaming.net", + "db_id": "4066" + } +}, +{ + "model": "game_database.company", + "pk": 97, + "fields": { + "name": "NGD Studios", + "db_id": "290" + } +}, +{ + "model": "game_database.company", + "pk": 98, + "fields": { + "name": "Special Reserve Games", + "db_id": "18362" + } +}, +{ + "model": "game_database.company", + "pk": 99, + "fields": { + "name": "Dodge Roll", + "db_id": "10603" + } +}, +{ + "model": "game_database.company", + "pk": 100, + "fields": { + "name": "The Game Bakers", + "db_id": "7657" + } +}, +{ + "model": "game_database.company", + "pk": 101, + "fields": { + "name": "D-pad Studio", + "db_id": "7036" + } +}, +{ + "model": "game_database.company", + "pk": 102, + "fields": { + "name": "Soedesco", + "db_id": "10558" + } +}, +{ + "model": "game_database.company", + "pk": 103, + "fields": { + "name": "Finji", + "db_id": "10055" + } +}, +{ + "model": "game_database.company", + "pk": 104, + "fields": { + "name": "Infinite Fall", + "db_id": "9499" + } +}, +{ + "model": "game_database.company", + "pk": 105, + "fields": { + "name": "Team Cherry", + "db_id": "10636" + } +}, +{ + "model": "game_database.company", + "pk": 106, + "fields": { + "name": "Fangamer", + "db_id": "19557" + } +}, +{ + "model": "game_database.company", + "pk": 107, + "fields": { + "name": "SCS Software", + "db_id": "3214" + } +}, +{ + "model": "game_database.company", + "pk": 108, + "fields": { + "name": "Wendros AB", + "db_id": "8479" + } +}, +{ + "model": "game_database.company", + "pk": 109, + "fields": { + "name": "Excalibur Publishing Limited", + "db_id": "2861" + } +}, +{ + "model": "game_database.company", + "pk": 110, + "fields": { + "name": "Strategy First, Inc.", + "db_id": "323" + } +}, +{ + "model": "game_database.company", + "pk": 111, + "fields": { + "name": "Paradox Interactive AB", + "db_id": "1366" + } +}, +{ + "model": "game_database.company", + "pk": 112, + "fields": { + "name": "Focus Home Interactive", + "db_id": "720" + } +}, +{ + "model": "game_database.company", + "pk": 113, + "fields": { + "name": "GIANTS Software GmbH", + "db_id": "6833" + } +}, +{ + "model": "game_database.company", + "pk": 114, + "fields": { + "name": "Square Enix", + "db_id": "104" + } +}, +{ + "model": "game_database.company", + "pk": 115, + "fields": { + "name": "Square Visual Works", + "db_id": "10321" + } +}, +{ + "model": "game_database.company", + "pk": 116, + "fields": { + "name": "Paradox Development Studio", + "db_id": "8504" + } +}, +{ + "model": "game_database.company", + "pk": 117, + "fields": { + "name": "IO Interactive", + "db_id": "3562" + } +}, +{ + "model": "game_database.company", + "pk": 118, + "fields": { + "name": "Avalanche Studios", + "db_id": "5927" + } +}, +{ + "model": "game_database.company", + "pk": 119, + "fields": { + "name": "Deck Nine Games", + "db_id": "14383" + } +}, +{ + "model": "game_database.company", + "pk": 120, + "fields": { + "name": "DrinkBox Studios", + "db_id": "7162" + } +}, +{ + "model": "game_database.company", + "pk": 121, + "fields": { + "name": "Broken Rules", + "db_id": "7114" + } +}, +{ + "model": "game_database.company", + "pk": 122, + "fields": { + "name": "CD Projekt Red", + "db_id": "2890" + } +}, +{ + "model": "game_database.company", + "pk": 123, + "fields": { + "name": "Bandai Namco Entertainment Europe", + "db_id": "17313" + } +}, +{ + "model": "game_database.company", + "pk": 124, + "fields": { + "name": "Tango Gameworks", + "db_id": "7035" + } +}, +{ + "model": "game_database.company", + "pk": 125, + "fields": { + "name": "Tokyo RPG Factory", + "db_id": "11175" + } +}, +{ + "model": "game_database.company", + "pk": 126, + "fields": { + "name": "Gemdrops, Inc.", + "db_id": "17622" + } +}, +{ + "model": "game_database.company", + "pk": 127, + "fields": { + "name": "Deep Silver", + "db_id": "52" + } +}, +{ + "model": "game_database.company", + "pk": 128, + "fields": { + "name": "Warhorse studios", + "db_id": "7684" } }, { @@ -173,6 +1214,12 @@ "description": "8-Bit Armies is a retro styled RTS game from Petroglyph.", "img_url": "https://www.giantbomb.com/api/image/original/3051471-box_8ba.png", "update": false, + "publishers": [ + 1 + ], + "developers": [ + 1 + ], "genres": [ 1, 2 @@ -192,6 +1239,13 @@ "description": "A shooter based fighting game. Doujin PC title developed by Orange_Juice.", "img_url": "https://www.giantbomb.com/api/image/original/2104778-aos2logo.jpg", "update": false, + "publishers": [ + 2, + 3 + ], + "developers": [ + 2 + ], "genres": [ 3, 4 @@ -211,6 +1265,13 @@ "description": "A first-person survival horror game with advanced physics-based puzzles from Frictional Games, the creators of the Penumbra series. Its dynamic of light and darkness and focus on avoidance of enemies rather than combat have been highly influential in recent horror games.", "img_url": "https://www.giantbomb.com/api/image/original/2299522-amnesia.png", "update": false, + "publishers": [ + 4, + 5 + ], + "developers": [ + 4 + ], "genres": [ 5, 6 @@ -230,6 +1291,12 @@ "description": "A stealth action game featuring an assassin who has control over shadows.", "img_url": "https://www.giantbomb.com/api/image/original/3029647-box_ara.png", "update": false, + "publishers": [ + 6 + ], + "developers": [ + 7 + ], "genres": [ 7 ] @@ -248,6 +1315,13 @@ "description": "A 2.5D downloadable title for the Xbox One, PlayStation 4 and PC. The game follows Shao Jun, the last remaining Assassin of the Chinese Brotherhood.", "img_url": "https://www.giantbomb.com/api/image/original/2739447-assassins-creed-unity-china-chronicles-1.jpg", "update": false, + "publishers": [ + 8 + ], + "developers": [ + 9, + 10 + ], "genres": [ 8, 9 @@ -267,6 +1341,15 @@ "description": "Arkham Knight, developer Rocksteady's return to the Batman series, takes place one year after Arkham City. It promises to expand the open world from the previous game, allowing players to drive the Batmobile through Gotham City's streets.", "img_url": "https://www.giantbomb.com/api/image/original/2606852-keyfull%209237457203.jpg", "update": false, + "publishers": [ + 11 + ], + "developers": [ + 12, + 13, + 14, + 15 + ], "genres": [ 9 ] @@ -285,6 +1368,8 @@ "description": "Battlevoid: Harbinger is an epic space adventure RTS developed by Bugbyte Ltd.", "img_url": "https://www.giantbomb.com/api/image/original/2975952-maincapsule616x353%20%28version2%29.jpg", "update": false, + "publishers": [], + "developers": [], "genres": [ 1 ] @@ -303,6 +1388,14 @@ "description": "Bayonetta is a \"stylish action game\" from PlatinumGames. The titular character is a witch who can use hair-based magic, as well as firearms attached to her feet, to battle fallen angels and other foes.", "img_url": "https://www.giantbomb.com/api/image/original/1124551-gb.png", "update": false, + "publishers": [ + 16, + 17 + ], + "developers": [ + 18, + 19 + ], "genres": [ 7 ] @@ -321,6 +1414,12 @@ "description": "Bear With Me is an episodic adventure game with a noir inspired theme. It was developed by Exordium Games.", "img_url": "https://www.giantbomb.com/api/image/original/2876102-bearwithme.jpg", "update": false, + "publishers": [ + 20 + ], + "developers": [ + 20 + ], "genres": [ 5 ] @@ -339,6 +1438,13 @@ "description": "Beholder is a totalitarian themed spying game.", "img_url": "https://www.giantbomb.com/api/image/original/2894334-header.jpg", "update": false, + "publishers": [ + 21, + 22 + ], + "developers": [ + 23 + ], "genres": [ 1, 10 @@ -358,6 +1464,13 @@ "description": "A collection of the originals and remakes of Homeworld 1 and 2. Improvements include better textures, models, access to higher resolutions and redone cutscenes.", "img_url": "https://www.giantbomb.com/api/image/original/2730473-untitled.png", "update": false, + "publishers": [ + 24 + ], + "developers": [ + 24, + 25 + ], "genres": [ 2 ] @@ -376,6 +1489,12 @@ "description": "Door Kickers is a top-down real-time SWAT tactics game.", "img_url": "https://www.giantbomb.com/api/image/original/2695093-doorkickers.png", "update": false, + "publishers": [ + 26 + ], + "developers": [ + 26 + ], "genres": [ 1 ] @@ -394,6 +1513,12 @@ "description": "A vertical-scrolling action roguelike that is heavily inspired by Spelunky.", "img_url": "https://www.giantbomb.com/api/image/original/3118812-box_dw.png", "update": false, + "publishers": [ + 27 + ], + "developers": [ + 28 + ], "genres": [ 8, 11 @@ -413,6 +1538,10 @@ "description": "TIS-100 is a programming puzzle game developed by Zachtronics.", "img_url": "https://www.giantbomb.com/api/image/original/2756477-0812024717-heade.jpg", "update": false, + "publishers": [], + "developers": [ + 29 + ], "genres": [ 6, 10 @@ -432,6 +1561,12 @@ "description": "A tough-as-nails, retro-styled action game published by Adult Swim.", "img_url": "https://www.giantbomb.com/api/image/original/2701435-box_volgarr.png", "update": false, + "publishers": [ + 30 + ], + "developers": [ + 31 + ], "genres": [ 7, 8 @@ -451,6 +1586,13 @@ "description": "A procedurally generated roguelike action game developed by Vlambeer. After creating a prototype called Wasteland Kings for Mojam 2, Vlambeer took the prototype and renamed it Nuclear Throne.", "img_url": "https://www.giantbomb.com/api/image/original/2803716-newart.png", "update": false, + "publishers": [ + 32, + 33 + ], + "developers": [ + 32 + ], "genres": [ 4, 7 @@ -470,6 +1612,12 @@ "description": "A dungeon crawler that seeks to weigh the psychological effects of delving into hellish monster abodes, not just the damage to HP. Team chemistry means more than just skill synergy.", "img_url": "https://www.giantbomb.com/api/image/original/2908406-4612953331-hMFSG.jpg", "update": false, + "publishers": [ + 34 + ], + "developers": [ + 34 + ], "genres": [ 12 ] @@ -488,6 +1636,23 @@ "description": "Considered by many to be the progenitor of the first-person shooter genre, Wolfenstein 3D is a 1992 first-person action game that pits the player, as Allied spy William \"B.J.\" Blazkowicz, against the might of Nazi Germany.", "img_url": "https://www.giantbomb.com/api/image/original/2220255-wolf3d_dos.png", "update": false, + "publishers": [ + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43 + ], + "developers": [ + 35, + 41, + 43, + 44 + ], "genres": [ 7, 13 @@ -507,6 +1672,10 @@ "description": "Tooth and Tail is an \"Arcade RTS\" by Pocketwatch Games, the creators of Monaco: What's yours is Mine.", "img_url": "https://www.giantbomb.com/api/image/original/2820867-logo.png", "update": false, + "publishers": [], + "developers": [ + 45 + ], "genres": [ 1, 2 @@ -526,6 +1695,12 @@ "description": "Flinthook is a roguelite, grappling hook platformer from Tribute Games.", "img_url": "https://www.giantbomb.com/api/image/original/2991332-box_fh.png", "update": false, + "publishers": [ + 33 + ], + "developers": [ + 46 + ], "genres": [ 8 ] @@ -544,6 +1719,12 @@ "description": "The Stanley Parable is an abstract, psychological, dark and humorous meta-narrative that attempts to make its choices void, journey paradoxical and generate discussion about storytelling in video games.", "img_url": "https://www.giantbomb.com/api/image/original/2853861-4714912512-heade.jpg", "update": false, + "publishers": [ + 47 + ], + "developers": [ + 47 + ], "genres": [ 5 ] @@ -562,6 +1743,15 @@ "description": "An indie minimalist puzzle platformer.", "img_url": "https://www.giantbomb.com/api/image/original/2725629-image-2.jpg", "update": false, + "publishers": [ + 22, + 33, + 48 + ], + "developers": [ + 22, + 48 + ], "genres": [ 6, 8 @@ -581,6 +1771,12 @@ "description": "Br\u00fctal Legend is a humorous heavy-metal, open-world, action-adventure game with light real-time strategy elements. As Eddie Riggs, lead the people of the Br\u00fctal World to rise up against the Tainted Coil demons who rule the world, and their leader, the sinister Emperor Doviculus.", "img_url": "https://www.giantbomb.com/api/image/original/2085660-box_blegend.png", "update": false, + "publishers": [ + 49 + ], + "developers": [ + 50 + ], "genres": [ 2, 9 @@ -600,6 +1796,12 @@ "description": "Trine 3: Artifacts of Power is the sequel to the sequel to Trine. Partially funded by the EU. This entry will for the first time blend 3D segments with the established 2D gameplay.", "img_url": "https://www.giantbomb.com/api/image/original/3117646-image.jpeg", "update": false, + "publishers": [ + 51 + ], + "developers": [ + 51 + ], "genres": [ 7, 8 @@ -619,6 +1821,13 @@ "description": "The final main entry in the Metal Gear Solid series bridges the events between Metal Gear Solid: Peace Walker and the original Metal Gear, as Big Boss wakes up from a nine-year coma in 1984 to rebuild his mercenary paradise.", "img_url": "https://www.giantbomb.com/api/image/original/2731604-mgsvclean.jpg", "update": false, + "publishers": [ + 52 + ], + "developers": [ + 53, + 54 + ], "genres": [ 4, 9 @@ -638,6 +1847,17 @@ "description": "Developed by Double Fine Productions, Psychonauts is a platforming action-adventure game in which players take on the role of Razputin, a young psychic out to thwart an evil plot to subvert the minds of other powerful psychics.", "img_url": "https://www.giantbomb.com/api/image/original/1841447-box_pnauts.png", "update": false, + "publishers": [ + 5, + 50, + 55, + 56, + 57 + ], + "developers": [ + 50, + 58 + ], "genres": [ 8, 9 @@ -657,6 +1877,12 @@ "description": "When Gotham City's slums have been transformed into a secluded super-prison, it's up to Batman to uncover its conspiracy in the sequel to 2009's Batman: Arkham Asylum.", "img_url": "https://www.giantbomb.com/api/image/original/2606170-batmanaccleanbox.jpg", "update": false, + "publishers": [ + 11 + ], + "developers": [ + 12 + ], "genres": [ 9 ] @@ -675,6 +1901,12 @@ "description": "A tarot card driven roguelike action role playing game, by Defiant Development from Brisbane, Australia.", "img_url": "https://www.giantbomb.com/api/image/original/3008935-box_hof.png", "update": false, + "publishers": [ + 59 + ], + "developers": [ + 59 + ], "genres": [ 1, 5, @@ -698,6 +1930,16 @@ "description": "A fast-paced action game co-developed by PlatinumGames and Kojima Productions. It follows ninja-cyborg Raiden's activities four years after the events of Metal Gear Solid 4: Guns of the Patriots.", "img_url": "https://www.giantbomb.com/api/image/original/2581091-91yrrxqis9l._sl1500_.jpg", "update": false, + "publishers": [ + 52 + ], + "developers": [ + 18, + 53, + 60, + 61, + 62 + ], "genres": [ 7, 9 @@ -717,6 +1959,13 @@ "description": "Rockstar returns to the fictional state of San Andreas with a crew of three criminal protagonists who work together to pull off high-profile heists.", "img_url": "https://www.giantbomb.com/api/image/original/2463980-grand%20theft%20auto%20v.jpg", "update": false, + "publishers": [ + 63, + 64 + ], + "developers": [ + 65 + ], "genres": [ 9, 16 @@ -736,6 +1985,16 @@ "description": "In a world with health regeneration and cover-based systems, one of the longest-running first-person shooter series returns to its brutal, fast-paced roots.", "img_url": "https://www.giantbomb.com/api/image/original/2849529-doom.jpg", "update": false, + "publishers": [ + 43, + 66 + ], + "developers": [ + 35, + 67, + 68, + 69 + ], "genres": [ 13 ] @@ -754,6 +2013,12 @@ "description": "Duet is a mobile action game with a soundtrack by Melbourne composer and Gotye multi-instrumentalist, Tim Shiel.", "img_url": "https://www.giantbomb.com/api/image/original/2564607-1255314345-mzl.b.png", "update": false, + "publishers": [ + 70 + ], + "developers": [ + 70 + ], "genres": [] } }, @@ -770,6 +2035,12 @@ "description": "Titan Souls is a top down action game where you play as a hero trying to defeat large and powerful monsters.", "img_url": "https://www.giantbomb.com/api/image/original/2653523-6787669712-14510.jpg", "update": false, + "publishers": [ + 27 + ], + "developers": [ + 71 + ], "genres": [ 7 ] @@ -788,6 +2059,13 @@ "description": "The third entry in the Super Mario Bros inspired platformer series.", "img_url": "https://www.giantbomb.com/api/image/original/2478661-box_gstd.png", "update": false, + "publishers": [ + 72, + 73 + ], + "developers": [ + 72 + ], "genres": [ 8 ] @@ -806,6 +2084,13 @@ "description": "Deep within the abandoned halls of Mount Massive Asylum, amateur journalist Miles Upshur sets out to find a good story, and instead finds an evil presence.", "img_url": "https://www.giantbomb.com/api/image/original/2958612-box_outlast.png", "update": false, + "publishers": [ + 33, + 74 + ], + "developers": [ + 74 + ], "genres": [ 5 ] @@ -824,6 +2109,12 @@ "description": "The Sun has stopped in the middle of the sky, the Gods have died and human settlements are being invaded by the Dredge, a race of stone beings. There can be no doubt about it, the world is coming to an end. In this turn-based tactics game, borrowing elements from Norse myth, your clan's continued survival is the only thing that truly matters. Will its banner be stomped into the the ground or fly high and bring back hope to those who have lost it in this desolate cold world?", "img_url": "https://www.giantbomb.com/api/image/original/3007517-box_tbs.png", "update": false, + "publishers": [ + 75 + ], + "developers": [ + 75 + ], "genres": [ 1, 12 @@ -843,6 +2134,14 @@ "description": "6180 the moon is a puzzle-platformer in which players control the Moon as it sets off to find the missing Sun.", "img_url": "https://www.giantbomb.com/api/image/original/2466112-9616184041-boxsh.png", "update": false, + "publishers": [ + 76, + 77 + ], + "developers": [ + 76, + 78 + ], "genres": [ 8 ] @@ -861,6 +2160,12 @@ "description": "From the makers of Super Crate Box comes the only game to allow players to create, customize, and fly their own luftrausers.", "img_url": "https://www.giantbomb.com/api/image/original/2859664-1501548940-heade.jpg", "update": false, + "publishers": [ + 27 + ], + "developers": [ + 32 + ], "genres": [ 11 ] @@ -879,6 +2184,13 @@ "description": "Race the Sun puts players in a solar-powered aircraft that must avoid obstacles at increasing speeds in an attempt to stay airborne as long as possible in a race against the setting sun. Supports the Oculus Rift for PC.", "img_url": "https://www.giantbomb.com/api/image/original/2991334-box_rts.png", "update": false, + "publishers": [ + 33, + 79 + ], + "developers": [ + 79 + ], "genres": [ 7, 16 @@ -898,6 +2210,10 @@ "description": "Planetbase is a strategy game where players guide a group of space settlers trying to establish an outpost on a remote planet.", "img_url": "https://www.giantbomb.com/api/image/original/2991337-box_pb.png", "update": false, + "publishers": [], + "developers": [ + 80 + ], "genres": [ 1, 10 @@ -917,6 +2233,13 @@ "description": "The latest game announced by acclaimed indie developer, Introversion Software, in which players build and manage the day-to-day operations of a maximum security prison.", "img_url": "https://www.giantbomb.com/api/image/original/2005326-prisonarch_logo.jpg", "update": false, + "publishers": [ + 81, + 82 + ], + "developers": [ + 81 + ], "genres": [ 1, 10 @@ -936,6 +2259,12 @@ "description": "Arma 3 is the third core game in the simulation and modern combat Arma franchise developed by Bohemia Interactive.", "img_url": "https://www.giantbomb.com/api/image/original/2569992-4939205824-Arma3.jpg", "update": false, + "publishers": [ + 83 + ], + "developers": [ + 83 + ], "genres": [ 10, 13 @@ -955,6 +2284,13 @@ "description": "A new real-time strategy game from Stardock. The player commands on a massive scale with large amounts of units on the screen.", "img_url": "https://www.giantbomb.com/api/image/original/2899842-f3e059_ashesofthesingularity.jpg", "update": false, + "publishers": [ + 84 + ], + "developers": [ + 84, + 85 + ], "genres": [ 2 ] @@ -973,6 +2309,18 @@ "description": "Assassin's Creed: Rogue takes place during the Seven Years' War in and around the American colonies. The protagonist, Shay Patrick Cormac, is an Assassin-turned-Templar who is hunting his former Brothers in the region.", "img_url": "https://www.giantbomb.com/api/image/original/2667100-10575388_878538075492285_1649926027762407539_o.jpg", "update": false, + "publishers": [ + 8 + ], + "developers": [ + 9, + 86, + 87, + 88, + 89, + 90, + 91 + ], "genres": [ 9 ] @@ -981,25 +2329,6 @@ { "model": "game_database.game", "pk": 45, - "fields": { - "title": "Batman: Arkham Origins", - "db_id": "42245", - "main_time": 12.5, - "extra_time": 22.0, - "completion_time": 37.0, - "release_date": null, - "description": "Two years after beginning his crime-fighting career, Batman faces his toughest challenge ever when the crime lord known as Black Mask hires the eight deadliest assassins in the DC Universe to kill the vigilante who has been interfering in his operations.", - "img_url": "https://www.giantbomb.com/api/image/original/2485321-486263.jpg", - "update": false, - "genres": [ - 9, - 17 - ] - } -}, -{ - "model": "game_database.game", - "pk": 46, "fields": { "title": "FTL: Faster Than Light", "db_id": "37770", @@ -1010,6 +2339,12 @@ "description": "In this roguelike space sim, players are tasked with commanding a customized starship on an important mission through a randomized universe, with vile rebels nipping at their heels.", "img_url": "https://www.giantbomb.com/api/image/original/2326566-ftl_box.jpg", "update": false, + "publishers": [ + 92 + ], + "developers": [ + 92 + ], "genres": [ 1, 12 @@ -1018,99 +2353,7 @@ }, { "model": "game_database.game", - "pk": 47, - "fields": { - "title": "Xenon Valkyrie", - "db_id": "58180", - "main_time": 0.0, - "extra_time": 12.0, - "completion_time": 0.0, - "release_date": null, - "description": "Xenon Valkyrie is a rogue-like side-scrolling action-adventure game for Windows, Mac, and Linux developed by Diabolical Mind.", - "img_url": "https://www.giantbomb.com/api/image/original/2918245-7308933481-", - "update": false, - "genres": [] - } -}, -{ - "model": "game_database.game", - "pk": 48, - "fields": { - "title": "Kingdom", - "db_id": "47635", - "main_time": 8.5, - "extra_time": 18.0, - "completion_time": 36.5, - "release_date": null, - "description": "A very minimal strategy game that encourages players to stop and enjoy the scenery.", - "img_url": "https://www.giantbomb.com/api/image/original/2784516-14369-b.png", - "update": false, - "genres": [ - 1, - 5, - 10 - ] - } -}, -{ - "model": "game_database.game", - "pk": 49, - "fields": { - "title": "Viscera Cleanup Detail: Shadow Warrior", - "db_id": "44694", - "main_time": 1.5, - "extra_time": 2.0, - "completion_time": 2.0, - "release_date": null, - "description": "A cleaning simulator by RuneStorm that is set in the Shadow Warrior universe.", - "img_url": "https://www.giantbomb.com/api/image/original/3140511-box_vcdsw.png", - "update": false, - "genres": [ - 7, - 10 - ] - } -}, -{ - "model": "game_database.game", - "pk": 50, - "fields": { - "title": "Galak-Z", - "db_id": "42925", - "main_time": 9.0, - "extra_time": 14.0, - "completion_time": 0.0, - "release_date": null, - "description": "Galak-Z is a sci-fi roguelike space shooter inspired by anime of the 1970s and '80s.", - "img_url": "https://www.giantbomb.com/api/image/original/2496428-gz.jpg", - "update": false, - "genres": [ - 11 - ] - } -}, -{ - "model": "game_database.game", - "pk": 51, - "fields": { - "title": "Serious Sam: The First Encounter", - "db_id": "27152", - "main_time": 6.0, - "extra_time": 7.5, - "completion_time": 10.5, - "release_date": null, - "description": "A first-person shooter where players shoot hordes of relentless monsters while trying to save Earth from Mental and his forces.", - "img_url": "https://www.giantbomb.com/api/image/original/1824062-box_ssamfe.jpg", - "update": false, - "genres": [ - 7, - 13 - ] - } -}, -{ - "model": "game_database.game", - "pk": 52, + "pk": 46, "fields": { "title": "The Wolf Among Us", "db_id": "34213", @@ -1121,6 +2364,13 @@ "description": "A prequel to the Fables comic book series, The Wolf Among Us tells a tale of the reformed Big Bad Wolf of childhood folklore (who is the sheriff of a secluded community of fables in 20th century New York City) as he investigates a series of grisly murders.", "img_url": "https://www.giantbomb.com/api/image/original/3039239-box_twauttgs.png", "update": false, + "publishers": [ + 93 + ], + "developers": [ + 93, + 94 + ], "genres": [ 5 ] @@ -1128,7 +2378,7 @@ }, { "model": "game_database.game", - "pk": 53, + "pk": 47, "fields": { "title": "That Dragon, Cancer", "db_id": "43546", @@ -1139,6 +2389,10 @@ "description": "An adventure game focusing on a true story about raising a son who has terminal cancer.", "img_url": "https://www.giantbomb.com/api/image/original/2814311-0694125108-capsu.jpg", "update": false, + "publishers": [], + "developers": [ + 95 + ], "genres": [ 5 ] @@ -1146,7 +2400,7 @@ }, { "model": "game_database.game", - "pk": 54, + "pk": 48, "fields": { "title": "Master of Orion", "db_id": "49906", @@ -1157,6 +2411,12 @@ "description": "A reboot of the space-faring 4X franchise, Master of Orion. It is being developed by NGD studios and published by World of Tanks' creators, Wargaming.", "img_url": "https://www.giantbomb.com/api/image/original/2763901-6576315634-capsu.jpg", "update": false, + "publishers": [ + 96 + ], + "developers": [ + 97 + ], "genres": [ 1 ] @@ -1164,7 +2424,7 @@ }, { "model": "game_database.game", - "pk": 55, + "pk": 49, "fields": { "title": "Enter the Gungeon", "db_id": "48332", @@ -1175,6 +2435,13 @@ "description": "Four unlikely heroes must fight through a fortress inhabited by large sentient bullets (among other gun-related creatures) seeking a legendary weapon in this gun-themed rogue-like \"bullet hell\" shooter.", "img_url": "https://www.giantbomb.com/api/image/original/2948220-box_etg.png", "update": false, + "publishers": [ + 27, + 98 + ], + "developers": [ + 99 + ], "genres": [ 4, 9, @@ -1184,7 +2451,7 @@ }, { "model": "game_database.game", - "pk": 56, + "pk": 50, "fields": { "title": "Furi", "db_id": "52304", @@ -1195,15 +2462,22 @@ "description": "Furi is an ultra-responsive mix of fast-paced sword fighting and dual-stick shooting. Featuring character designs by Takashi Okazaki, creator of Afro Samurai and a explosive electro soundtrack.", "img_url": "https://www.giantbomb.com/api/image/original/2993431-box_furi.png", "update": false, + "publishers": [ + 33, + 100 + ], + "developers": [ + 100 + ], "genres": [ 7, - 18 + 17 ] } }, { "model": "game_database.game", - "pk": 57, + "pk": 51, "fields": { "title": "Owlboy", "db_id": "23714", @@ -1214,6 +2488,13 @@ "description": "A 2D platforming action-adventure developed by D-pad Studios for PC.", "img_url": "https://www.giantbomb.com/api/image/original/3017059-box_ob.png", "update": false, + "publishers": [ + 101, + 102 + ], + "developers": [ + 101 + ], "genres": [ 8, 9 @@ -1222,7 +2503,7 @@ }, { "model": "game_database.game", - "pk": 58, + "pk": 52, "fields": { "title": "Night in the Woods", "db_id": "44986", @@ -1233,6 +2514,13 @@ "description": "A story-focused platforming adventure/exploration game with a striking and colorful art style. Taking place in a small town of anthropomorphic animals, the game revolves around college dropout Mae as she tries to get reacquainted with her hometown.", "img_url": "https://www.giantbomb.com/api/image/original/2993643-box_nitw.png", "update": false, + "publishers": [ + 33, + 103 + ], + "developers": [ + 104 + ], "genres": [ 5, 8 @@ -1241,17 +2529,24 @@ }, { "model": "game_database.game", - "pk": 59, + "pk": 53, "fields": { "title": "Hollow Knight", "db_id": "48412", "main_time": 24.0, "extra_time": 36.5, - "completion_time": 51.0, + "completion_time": 51.5, "release_date": null, "description": "A 2D exploration action adventure game, developed by Team Cherry.", "img_url": "https://www.giantbomb.com/api/image/original/3138852-box_hk.png", "update": false, + "publishers": [ + 105, + 106 + ], + "developers": [ + 105 + ], "genres": [ 8, 9 @@ -1260,7 +2555,7 @@ }, { "model": "game_database.game", - "pk": 60, + "pk": 54, "fields": { "title": "Euro Truck Simulator 2", "db_id": "40197", @@ -1271,6 +2566,14 @@ "description": "Travel across Europe as a trucker delivering cargo in a variety of trucks.", "img_url": "https://www.giantbomb.com/api/image/original/3140522-box_ets2.png", "update": false, + "publishers": [ + 107, + 108, + 109 + ], + "developers": [ + 107 + ], "genres": [ 10, 16 @@ -1279,7 +2582,7 @@ }, { "model": "game_database.game", - "pk": 61, + "pk": 55, "fields": { "title": "Europa Universalis", "db_id": "11305", @@ -1290,6 +2593,12 @@ "description": "Based on a French board game of the same name, Europa Universalis allows players to take control of a civilization between 1492 and 1792", "img_url": "https://www.giantbomb.com/api/image/original/2331102-box_eu.png", "update": false, + "publishers": [ + 110 + ], + "developers": [ + 111 + ], "genres": [ 1, 10 @@ -1298,7 +2607,7 @@ }, { "model": "game_database.game", - "pk": 62, + "pk": 56, "fields": { "title": "Farming Simulator 17", "db_id": "54151", @@ -1309,6 +2618,13 @@ "description": "The newest game in the Farming Simulator franchise for consoles and the PC.", "img_url": "https://www.giantbomb.com/api/image/original/3037741-box_fs17.png", "update": false, + "publishers": [ + 112, + 113 + ], + "developers": [ + 113 + ], "genres": [ 10 ] @@ -1316,7 +2632,7 @@ }, { "model": "game_database.game", - "pk": 63, + "pk": 57, "fields": { "title": "Final Fantasy XV", "db_id": "21006", @@ -1327,6 +2643,13 @@ "description": "The fifteenth entry in Square Enix's flagship RPG franchise, set in a world that mixes elements of modern technology with magic, a fantasy based on reality.", "img_url": "https://www.giantbomb.com/api/image/original/2903750-final%20fantasy%20xv%20v3.jpg", "update": false, + "publishers": [ + 114 + ], + "developers": [ + 114, + 115 + ], "genres": [ 7, 9, @@ -1336,7 +2659,7 @@ }, { "model": "game_database.game", - "pk": 64, + "pk": 58, "fields": { "title": "Hearts of Iron IV", "db_id": "45214", @@ -1347,6 +2670,12 @@ "description": "The next entry in the series of WWII wargames from Paradox Interactive.", "img_url": "https://www.giantbomb.com/api/image/original/2594042-gaming-hearts-of-iron-4.jpg", "update": false, + "publishers": [ + 111 + ], + "developers": [ + 116 + ], "genres": [ 1 ] @@ -1354,7 +2683,7 @@ }, { "model": "game_database.game", - "pk": 65, + "pk": 59, "fields": { "title": "Hitman", "db_id": "45150", @@ -1362,47 +2691,244 @@ "extra_time": 26.5, "completion_time": 95.0, "release_date": null, - "description": "The sixth game in IO Interactive's stealth murder franchise, simply titled Hitman, adopts an episodic design which continually introduces new assassination contracts for players to undertake.", - "img_url": "https://www.giantbomb.com/api/image/original/3124186-1671936150-packs.jpg", - "update": false, + "description": "The sixth game in IO Interactive's stealth murder franchise, simply titled Hitman, adopts an episodic design which continually introduces new assassination contracts for players to undertake.", + "img_url": "https://www.giantbomb.com/api/image/original/3124186-1671936150-packs.jpg", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 117 + ], + "genres": [ + 9 + ] + } +}, +{ + "model": "game_database.game", + "pk": 60, + "fields": { + "title": "Just Cause 3", + "db_id": "48207", + "main_time": 17.5, + "extra_time": 34.0, + "completion_time": 57.0, + "release_date": null, + "description": "Battle a dictator's forces in a fictional Mediterranean archipelago in this follow-up to the popular series from Avalanche Studios and Square-Enix.", + "img_url": "https://www.giantbomb.com/api/image/original/2996057-box_jc3.png", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 118 + ], + "genres": [ + 7 + ] + } +}, +{ + "model": "game_database.game", + "pk": 61, + "fields": { + "title": "Life Is Strange: Before the Storm", + "db_id": "59903", + "main_time": 10.0, + "extra_time": 11.0, + "completion_time": 12.5, + "release_date": null, + "description": "A prequel to the initial Life is Strange game, focused on Chloe's life.", + "img_url": "https://www.giantbomb.com/api/image/original/2945312-screen%20shot%202017-06-11%20at%208.09.07%20pm.png", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 119 + ], + "genres": [ + 5 + ] + } +}, +{ + "model": "game_database.game", + "pk": 62, + "fields": { + "title": "Guacamelee!", + "db_id": "37673", + "main_time": 6.0, + "extra_time": 8.5, + "completion_time": 14.0, + "release_date": null, + "description": "Guacamelee! is a side-scrolling Metroidvania style game featuring a luchador on a quest through dual worlds to save El Presidente's daughter.", + "img_url": "https://www.giantbomb.com/api/image/original/2421392-guacamelee_key_art_final.jpg", + "update": false, + "publishers": [ + 33, + 120 + ], + "developers": [ + 120, + 121 + ], + "genres": [ + 7, + 8, + 18 + ] + } +}, +{ + "model": "game_database.game", + "pk": 63, + "fields": { + "title": "The Witcher 3: Wild Hunt", + "db_id": "41484", + "main_time": 51.0, + "extra_time": 103.0, + "completion_time": 173.0, + "release_date": null, + "description": "CD Projekt RED's third Witcher combines the series' non-linear storytelling with a sprawling open world that concludes the saga of Geralt of Rivia.", + "img_url": "https://www.giantbomb.com/api/image/original/2945734-the%20witcher%203%20-%20wild%20hunt.jpg", + "update": false, + "publishers": [ + 11, + 122, + 123 + ], + "developers": [ + 122 + ], + "genres": [ + 9, + 12 + ] + } +}, +{ + "model": "game_database.game", + "pk": 64, + "fields": { + "title": "NieR:Automata", + "db_id": "49998", + "main_time": 20.5, + "extra_time": 37.5, + "completion_time": 61.0, + "release_date": null, + "description": "NieR: Automata is an action role-playing game developed by PlatinumGames and published by Square Enix for PlayStation 4, Microsoft Windows and Xbox One.", + "img_url": "https://www.giantbomb.com/api/image/original/3124187-8762523691-packs.jpg", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 18, + 60 + ], + "genres": [ + 7, + 12 + ] + } +}, +{ + "model": "game_database.game", + "pk": 65, + "fields": { + "title": "The Evil Within 2", + "db_id": "59907", + "main_time": 13.0, + "extra_time": 18.5, + "completion_time": 26.5, + "release_date": null, + "description": "The Evil Within 2", + "img_url": "https://www.giantbomb.com/api/image/original/2945463-tew2_pg_ka_final_rgb_cl_042517_1496835937-1.jpg", + "update": false, + "publishers": [ + 66 + ], + "developers": [ + 124 + ], + "genres": [ + 4 + ] + } +}, +{ + "model": "game_database.game", + "pk": 66, + "fields": { + "title": "Final Fantasy XII: The Zodiac Age", + "db_id": "54121", + "main_time": 40.5, + "extra_time": 61.5, + "completion_time": 102.0, + "release_date": null, + "description": "The Zodiac Age is a remake of 2006's Final Fantasy XII that includes a job system that was previously only available in the Japan-only \"International\" edition. The remake also includes various other additions and enhancements.", + "img_url": "https://www.giantbomb.com/api/image/original/3124183-1203822419-packs.jpg", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 114 + ], "genres": [ - 9 + 12 ] } }, { "model": "game_database.game", - "pk": 66, + "pk": 67, "fields": { - "title": "Just Cause 3", - "db_id": "48207", - "main_time": 17.0, - "extra_time": 34.0, - "completion_time": 57.0, + "title": "I Am Setsuna", + "db_id": "50001", + "main_time": 20.5, + "extra_time": 26.0, + "completion_time": 47.0, "release_date": null, - "description": "Battle a dictator's forces in a fictional Mediterranean archipelago in this follow-up to the popular series from Avalanche Studios and Square-Enix.", - "img_url": "https://www.giantbomb.com/api/image/original/2996057-box_jc3.png", - "update": false, + "description": "A Japanese role-playing game developed by Square Enix's Tokyo RPG Factory studio. Its design is meant as a throwback to the classic JRPGs of the 90s.", + "img_url": "https://www.giantbomb.com/api/image/original/2872021-28210570252_09c44dd693_o.jpg", + "update": false, + "publishers": [ + 114 + ], + "developers": [ + 125, + 126 + ], "genres": [ - 7 + 12 ] } }, { "model": "game_database.game", - "pk": 67, + "pk": 68, "fields": { - "title": "Life Is Strange: Before the Storm", - "db_id": "59903", - "main_time": 10.0, - "extra_time": 11.0, - "completion_time": 12.5, + "title": "Kingdom Come: Deliverance", + "db_id": "44790", + "main_time": 39.5, + "extra_time": 71.5, + "completion_time": 122.0, "release_date": null, - "description": "A prequel to the initial Life is Strange game, focused on Chloe's life.", - "img_url": "https://www.giantbomb.com/api/image/original/2945312-screen%20shot%202017-06-11%20at%208.09.07%20pm.png", - "update": false, + "description": "A medieval open world RPG focused on period-accurate fighting and technique.", + "img_url": "https://www.giantbomb.com/api/image/original/3005658-box_kcd.png", + "update": false, + "publishers": [ + 127 + ], + "developers": [ + 128 + ], "genres": [ - 5 + 7, + 12 ] } }, @@ -1423,6 +2949,7 @@ "fields": { "parent_game": 1, "platform": 1, + "name": "8-Bit Armies", "release_date": "2016-04-22", "db_id": "147284", "update": false, @@ -1436,6 +2963,7 @@ "fields": { "parent_game": 2, "platform": 1, + "name": "", "release_date": null, "db_id": "", "update": true, @@ -1449,6 +2977,7 @@ "fields": { "parent_game": 3, "platform": 1, + "name": "Amnesia: the Dark Descent", "release_date": "2010-09-08", "db_id": "104196", "update": false, @@ -1462,6 +2991,7 @@ "fields": { "parent_game": 4, "platform": 1, + "name": "Aragami", "release_date": "2016-10-04", "db_id": "149783", "update": false, @@ -1475,6 +3005,7 @@ "fields": { "parent_game": 5, "platform": 1, + "name": "Assassin's Creed Chronicles: China", "release_date": "2015-04-21", "db_id": "140974", "update": false, @@ -1488,6 +3019,7 @@ "fields": { "parent_game": 6, "platform": 1, + "name": "Batman: Arkham Knight", "release_date": "2015-06-23", "db_id": "137781", "update": false, @@ -1501,6 +3033,7 @@ "fields": { "parent_game": 7, "platform": 1, + "name": "", "release_date": null, "db_id": "", "update": true, @@ -1514,6 +3047,7 @@ "fields": { "parent_game": 8, "platform": 1, + "name": "Bayonetta", "release_date": "2010-01-05", "db_id": "73858", "update": false, @@ -1527,6 +3061,7 @@ "fields": { "parent_game": 9, "platform": 1, + "name": "Bear With Me", "release_date": "2016-08-08", "db_id": "158105", "update": false, @@ -1540,6 +3075,7 @@ "fields": { "parent_game": 10, "platform": 1, + "name": "Initial Release", "release_date": "2016-11-09", "db_id": "151420", "update": false, @@ -1553,6 +3089,7 @@ "fields": { "parent_game": 11, "platform": 1, + "name": "Homeworld Remastered Collection", "release_date": "2015-02-25", "db_id": "140455", "update": false, @@ -1566,6 +3103,7 @@ "fields": { "parent_game": 12, "platform": 1, + "name": "Door Kickers", "release_date": "2014-10-20", "db_id": "129705", "update": false, @@ -1579,6 +3117,7 @@ "fields": { "parent_game": 13, "platform": 1, + "name": "Downwell", "release_date": "2015-10-15", "db_id": "144366", "update": false, @@ -1592,6 +3131,7 @@ "fields": { "parent_game": 14, "platform": 1, + "name": "TIS-100", "release_date": "2015-07-20", "db_id": "142722", "update": false, @@ -1605,6 +3145,7 @@ "fields": { "parent_game": 15, "platform": 1, + "name": "Volgarr the Viking", "release_date": "2013-09-13", "db_id": "129591", "update": false, @@ -1618,6 +3159,7 @@ "fields": { "parent_game": 16, "platform": 1, + "name": "Nuclear Throne", "release_date": "2015-12-05", "db_id": "130915", "update": false, @@ -1631,6 +3173,7 @@ "fields": { "parent_game": 17, "platform": 1, + "name": "Darkest Dungeon", "release_date": "2016-01-19", "db_id": "144494", "update": false, @@ -1644,6 +3187,7 @@ "fields": { "parent_game": 18, "platform": 1, + "name": "Wolfenstein 3D (Steam)", "release_date": "2007-08-04", "db_id": "19698", "update": false, @@ -1657,6 +3201,7 @@ "fields": { "parent_game": 19, "platform": 1, + "name": "Tooth and Tail", "release_date": "2017-09-12", "db_id": "156297", "update": false, @@ -1670,6 +3215,7 @@ "fields": { "parent_game": 20, "platform": 1, + "name": "Flinthook", "release_date": "2017-04-18", "db_id": "153581", "update": false, @@ -1683,6 +3229,7 @@ "fields": { "parent_game": 21, "platform": 1, + "name": "The Stanley Parable", "release_date": "2013-10-17", "db_id": "130853", "update": false, @@ -1696,6 +3243,7 @@ "fields": { "parent_game": 22, "platform": 1, + "name": "Thomas Was Alone", "release_date": "2012-06-30", "db_id": "120481", "update": false, @@ -1709,6 +3257,7 @@ "fields": { "parent_game": 23, "platform": 1, + "name": "Br\u00fctal Legend", "release_date": "2009-10-13", "db_id": "73327", "update": false, @@ -1722,6 +3271,7 @@ "fields": { "parent_game": 24, "platform": 1, + "name": "Trine 3: The Artifacts of Power", "release_date": "2015-12-22", "db_id": "168297", "update": false, @@ -1735,6 +3285,7 @@ "fields": { "parent_game": 25, "platform": 1, + "name": "Metal Gear Solid V: The Phantom Pain", "release_date": "2015-09-01", "db_id": "128086", "update": false, @@ -1748,6 +3299,7 @@ "fields": { "parent_game": 26, "platform": 1, + "name": "Psychonauts", "release_date": "2007-12-04", "db_id": "74085", "update": false, @@ -1761,6 +3313,7 @@ "fields": { "parent_game": 27, "platform": 1, + "name": "Batman: Arkham City", "release_date": "2011-10-18", "db_id": "98633", "update": false, @@ -1774,6 +3327,7 @@ "fields": { "parent_game": 28, "platform": 1, + "name": "Hand of Fate", "release_date": "2015-02-17", "db_id": "140151", "update": false, @@ -1787,6 +3341,7 @@ "fields": { "parent_game": 29, "platform": 1, + "name": "Metal Gear Rising: Revengeance", "release_date": "2013-02-19", "db_id": "84188", "update": false, @@ -1800,6 +3355,7 @@ "fields": { "parent_game": 30, "platform": 1, + "name": "Grand Theft Auto V", "release_date": "2013-09-17", "db_id": "121148", "update": false, @@ -1813,6 +3369,7 @@ "fields": { "parent_game": 31, "platform": 1, + "name": "Doom", "release_date": "2016-05-13", "db_id": "137133", "update": false, @@ -1826,6 +3383,7 @@ "fields": { "parent_game": 32, "platform": 1, + "name": "", "release_date": null, "db_id": "", "update": true, @@ -1839,6 +3397,7 @@ "fields": { "parent_game": 33, "platform": 1, + "name": "Titan Souls", "release_date": "2015-04-14", "db_id": "140418", "update": false, @@ -1852,6 +3411,7 @@ "fields": { "parent_game": 34, "platform": 1, + "name": "Giana Sisters: Twisted Dreams", "release_date": "2012-10-23", "db_id": "120020", "update": false, @@ -1865,6 +3425,7 @@ "fields": { "parent_game": 35, "platform": 1, + "name": "Outlast", "release_date": "2013-09-04", "db_id": "121204", "update": false, @@ -1878,6 +3439,7 @@ "fields": { "parent_game": 36, "platform": 1, + "name": "The Banner Saga", "release_date": "2014-01-14", "db_id": "125581", "update": false, @@ -1891,6 +3453,7 @@ "fields": { "parent_game": 37, "platform": 1, + "name": "6180 the moon (Steam)", "release_date": "2014-09-19", "db_id": "137949", "update": false, @@ -1904,6 +3467,7 @@ "fields": { "parent_game": 38, "platform": 1, + "name": "Luftrausers", "release_date": "2014-03-18", "db_id": "133219", "update": false, @@ -1917,6 +3481,7 @@ "fields": { "parent_game": 39, "platform": 1, + "name": "Race the Sun", "release_date": "2013-08-19", "db_id": "129205", "update": false, @@ -1930,6 +3495,7 @@ "fields": { "parent_game": 40, "platform": 1, + "name": "Planetbase", "release_date": "2018-01-11", "db_id": "158256", "update": false, @@ -1943,6 +3509,7 @@ "fields": { "parent_game": 41, "platform": 1, + "name": "Prison Architect", "release_date": "2016-06-28", "db_id": "148315", "update": false, @@ -1956,6 +3523,7 @@ "fields": { "parent_game": 42, "platform": 1, + "name": "Arma 3", "release_date": "2013-09-12", "db_id": "125867", "update": false, @@ -1969,6 +3537,7 @@ "fields": { "parent_game": 43, "platform": 1, + "name": "Ashes of the Singularity", "release_date": "2016-03-31", "db_id": "147031", "update": false, @@ -1982,6 +3551,7 @@ "fields": { "parent_game": 44, "platform": 1, + "name": "Assassin's Creed: Rogue", "release_date": "2014-11-11", "db_id": "137767", "update": false, @@ -1995,8 +3565,9 @@ "fields": { "parent_game": 45, "platform": 1, - "release_date": "2013-10-25", - "db_id": "127873", + "name": "FTL", + "release_date": "2012-09-14", + "db_id": "119544", "update": false, "publishers": [], "developers": [] @@ -2008,8 +3579,9 @@ "fields": { "parent_game": 46, "platform": 1, - "release_date": "2012-09-14", - "db_id": "119544", + "name": "The Wolf Among Us: Episode 1 - Faith", + "release_date": "2013-10-11", + "db_id": "130645", "update": false, "publishers": [], "developers": [] @@ -2021,8 +3593,9 @@ "fields": { "parent_game": 47, "platform": 1, - "release_date": "2017-12-19", - "db_id": "157787", + "name": "That Dragon, Cancer", + "release_date": "2016-01-12", + "db_id": "145600", "update": false, "publishers": [], "developers": [] @@ -2034,8 +3607,9 @@ "fields": { "parent_game": 48, "platform": 1, - "release_date": "2015-10-21", - "db_id": "145078", + "name": "Master of Orion", + "release_date": "2016-02-26", + "db_id": "161286", "update": false, "publishers": [], "developers": [] @@ -2047,8 +3621,9 @@ "fields": { "parent_game": 49, "platform": 1, - "release_date": "2013-10-11", - "db_id": "155608", + "name": "Enter the Gungeon", + "release_date": "2016-04-05", + "db_id": "147063", "update": false, "publishers": [], "developers": [] @@ -2060,8 +3635,9 @@ "fields": { "parent_game": 50, "platform": 1, - "release_date": "2015-08-04", - "db_id": "142537", + "name": "Furi", + "release_date": "2016-07-05", + "db_id": "148385", "update": false, "publishers": [], "developers": [] @@ -2073,8 +3649,9 @@ "fields": { "parent_game": 51, "platform": 1, - "release_date": "2009-11-24", - "db_id": "88325", + "name": "Owlboy", + "release_date": "2016-11-01", + "db_id": "150371", "update": false, "publishers": [], "developers": [] @@ -2086,8 +3663,9 @@ "fields": { "parent_game": 52, "platform": 1, - "release_date": "2013-10-11", - "db_id": "130645", + "name": "Night in the Woods", + "release_date": "2017-02-21", + "db_id": "152501", "update": false, "publishers": [], "developers": [] @@ -2099,8 +3677,9 @@ "fields": { "parent_game": 53, "platform": 1, - "release_date": "2016-01-12", - "db_id": "145600", + "name": "Hollow Knight", + "release_date": "2017-02-24", + "db_id": "153503", "update": false, "publishers": [], "developers": [] @@ -2112,8 +3691,9 @@ "fields": { "parent_game": 54, "platform": 1, - "release_date": "2016-02-26", - "db_id": "161286", + "name": "Euro Truck Simulator 2", + "release_date": "2012-10-18", + "db_id": "120864", "update": false, "publishers": [], "developers": [] @@ -2125,9 +3705,10 @@ "fields": { "parent_game": 55, "platform": 1, - "release_date": "2016-04-05", - "db_id": "147063", - "update": false, + "name": "", + "release_date": null, + "db_id": "", + "update": true, "publishers": [], "developers": [] } @@ -2138,8 +3719,9 @@ "fields": { "parent_game": 56, "platform": 1, - "release_date": "2016-07-05", - "db_id": "148385", + "name": "Farming Simulator 17", + "release_date": "2016-10-25", + "db_id": "149096", "update": false, "publishers": [], "developers": [] @@ -2151,8 +3733,9 @@ "fields": { "parent_game": 57, "platform": 1, - "release_date": "2016-11-01", - "db_id": "150371", + "name": "Final Fantasy XV", + "release_date": "2016-11-29", + "db_id": "84917", "update": false, "publishers": [], "developers": [] @@ -2164,8 +3747,9 @@ "fields": { "parent_game": 58, "platform": 1, - "release_date": "2017-02-21", - "db_id": "152501", + "name": "Hearts of Iron IV", + "release_date": "2016-06-06", + "db_id": "148061", "update": false, "publishers": [], "developers": [] @@ -2177,8 +3761,9 @@ "fields": { "parent_game": 59, "platform": 1, - "release_date": "2017-02-24", - "db_id": "153503", + "name": "Hitman", + "release_date": "2016-03-11", + "db_id": "146167", "update": false, "publishers": [], "developers": [] @@ -2190,8 +3775,9 @@ "fields": { "parent_game": 60, "platform": 1, - "release_date": "2012-10-18", - "db_id": "120864", + "name": "Just Cause 3", + "release_date": "2015-12-01", + "db_id": "142149", "update": false, "publishers": [], "developers": [] @@ -2203,9 +3789,10 @@ "fields": { "parent_game": 61, "platform": 1, - "release_date": null, - "db_id": "", - "update": true, + "name": "Life is Strange: Before the Storm (Episode 1)", + "release_date": "2017-08-31", + "db_id": "156200", + "update": false, "publishers": [], "developers": [] } @@ -2216,8 +3803,9 @@ "fields": { "parent_game": 62, "platform": 1, - "release_date": "2016-10-25", - "db_id": "149096", + "name": "Guacamelee!", + "release_date": "2013-04-09", + "db_id": "126551", "update": false, "publishers": [], "developers": [] @@ -2229,8 +3817,9 @@ "fields": { "parent_game": 63, "platform": 1, - "release_date": "2016-11-29", - "db_id": "84917", + "name": "The Witcher 3: Wild Hunt", + "release_date": "2015-05-19", + "db_id": "135013", "update": false, "publishers": [], "developers": [] @@ -2242,8 +3831,9 @@ "fields": { "parent_game": 64, "platform": 1, - "release_date": "2016-06-06", - "db_id": "148061", + "name": "NieR: Automata", + "release_date": "2017-02-23", + "db_id": "151322", "update": false, "publishers": [], "developers": [] @@ -2255,8 +3845,9 @@ "fields": { "parent_game": 65, "platform": 1, - "release_date": "2016-03-11", - "db_id": "146167", + "name": "The Evil Within 2", + "release_date": "2017-10-13", + "db_id": "154803", "update": false, "publishers": [], "developers": [] @@ -2268,8 +3859,9 @@ "fields": { "parent_game": 66, "platform": 1, - "release_date": "2015-12-01", - "db_id": "142149", + "name": "Final Fantasy XII: The Zodiac Age", + "release_date": "2019-04-30", + "db_id": "165476", "update": false, "publishers": [], "developers": [] @@ -2281,8 +3873,23 @@ "fields": { "parent_game": 67, "platform": 1, - "release_date": "2017-08-31", - "db_id": "156200", + "name": "I Am Setsuna", + "release_date": "2016-07-19", + "db_id": "147259", + "update": false, + "publishers": [], + "developers": [] + } +}, +{ + "model": "game_database.gameversion", + "pk": 68, + "fields": { + "parent_game": 68, + "platform": 1, + "name": "Kingdom Come: Deliverance", + "release_date": "2018-02-13", + "db_id": "158541", "update": false, "publishers": [], "developers": [] @@ -2292,8 +3899,9 @@ "model": "game_collection.queue", "pk": 1, "fields": { - "user": 1, + "user": 2, "game_version": 1, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null } @@ -2302,8 +3910,9 @@ "model": "game_collection.queue", "pk": 2, "fields": { - "user": 1, + "user": 2, "game_version": 2, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null } @@ -2312,8 +3921,9 @@ "model": "game_collection.queue", "pk": 3, "fields": { - "user": 1, + "user": 2, "game_version": 3, + "price": 0.0, "date_adquired": "2017-01-01", "time_played": null } @@ -2322,8 +3932,9 @@ "model": "game_collection.queue", "pk": 4, "fields": { - "user": 1, + "user": 2, "game_version": 4, + "price": 0.0, "date_adquired": "2018-01-03", "time_played": null } @@ -2332,8 +3943,9 @@ "model": "game_collection.queue", "pk": 5, "fields": { - "user": 1, + "user": 2, "game_version": 5, + "price": 0.0, "date_adquired": "2016-06-03", "time_played": null } @@ -2342,8 +3954,9 @@ "model": "game_collection.queue", "pk": 6, "fields": { - "user": 1, + "user": 2, "game_version": 6, + "price": 0.0, "date_adquired": "2018-10-28", "time_played": null } @@ -2352,8 +3965,9 @@ "model": "game_collection.queue", "pk": 7, "fields": { - "user": 1, + "user": 2, "game_version": 7, + "price": 0.0, "date_adquired": "2018-01-18", "time_played": null } @@ -2362,8 +3976,9 @@ "model": "game_collection.queue", "pk": 8, "fields": { - "user": 1, + "user": 2, "game_version": 8, + "price": 0.0, "date_adquired": "2018-07-31", "time_played": null } @@ -2372,8 +3987,9 @@ "model": "game_collection.queue", "pk": 9, "fields": { - "user": 1, + "user": 2, "game_version": 9, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null } @@ -2382,8 +3998,9 @@ "model": "game_collection.queue", "pk": 10, "fields": { - "user": 1, + "user": 2, "game_version": 10, + "price": 4.1, "date_adquired": "2018-01-03", "time_played": null } @@ -2392,8 +4009,9 @@ "model": "game_collection.queue", "pk": 11, "fields": { - "user": 1, + "user": 2, "game_version": 42, + "price": 0.0, "date_adquired": "2018-02-19", "time_played": null } @@ -2402,8 +4020,9 @@ "model": "game_collection.queue", "pk": 12, "fields": { - "user": 1, + "user": 2, "game_version": 43, + "price": 0.0, "date_adquired": "2019-03-26", "time_played": null } @@ -2412,28 +4031,20 @@ "model": "game_collection.queue", "pk": 13, "fields": { - "user": 1, + "user": 2, "game_version": 44, + "price": 0.0, "date_adquired": "2016-06-03", "time_played": null } }, -{ - "model": "game_collection.queue", - "pk": 14, - "fields": { - "user": 1, - "game_version": 45, - "date_adquired": "2018-10-28", - "time_played": null - } -}, { "model": "game_collection.playing", "pk": 1, "fields": { - "user": 1, + "user": 2, "game_version": 11, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null, "date_started": null @@ -2443,8 +4054,9 @@ "model": "game_collection.playing", "pk": 2, "fields": { - "user": 1, + "user": 2, "game_version": 12, + "price": 0.0, "date_adquired": "2018-01-03", "time_played": null, "date_started": null @@ -2454,8 +4066,9 @@ "model": "game_collection.playing", "pk": 3, "fields": { - "user": 1, + "user": 2, "game_version": 13, + "price": 0.0, "date_adquired": "2018-02-19", "time_played": null, "date_started": null @@ -2465,8 +4078,9 @@ "model": "game_collection.playing", "pk": 4, "fields": { - "user": 1, + "user": 2, "game_version": 14, + "price": 0.0, "date_adquired": "2019-03-26", "time_played": null, "date_started": null @@ -2476,8 +4090,9 @@ "model": "game_collection.playing", "pk": 5, "fields": { - "user": 1, + "user": 2, "game_version": 15, + "price": 0.0, "date_adquired": "2016-06-03", "time_played": null, "date_started": null @@ -2487,8 +4102,9 @@ "model": "game_collection.playing", "pk": 6, "fields": { - "user": 1, + "user": 2, "game_version": 16, + "price": 0.0, "date_adquired": "2016-06-03", "time_played": null, "date_started": null @@ -2498,8 +4114,9 @@ "model": "game_collection.playing", "pk": 7, "fields": { - "user": 1, + "user": 2, "game_version": 17, + "price": 0.0, "date_adquired": "2018-10-28", "time_played": null, "date_started": null @@ -2509,8 +4126,9 @@ "model": "game_collection.playing", "pk": 8, "fields": { - "user": 1, + "user": 2, "game_version": 18, + "price": 0.0, "date_adquired": "2018-01-18", "time_played": null, "date_started": null @@ -2520,8 +4138,9 @@ "model": "game_collection.playing", "pk": 9, "fields": { - "user": 1, + "user": 2, "game_version": 19, + "price": 0.0, "date_adquired": "2018-07-31", "time_played": null, "date_started": null @@ -2531,8 +4150,9 @@ "model": "game_collection.playing", "pk": 10, "fields": { - "user": 1, + "user": 2, "game_version": 20, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null, "date_started": null @@ -2542,41 +4162,21 @@ "model": "game_collection.playing", "pk": 11, "fields": { - "user": 1, - "game_version": 46, + "user": 2, + "game_version": 45, + "price": 0.0, "date_adquired": "2018-05-17", "time_played": null, "date_started": null } }, -{ - "model": "game_collection.playing", - "pk": 12, - "fields": { - "user": 1, - "game_version": 47, - "date_adquired": "2017-01-01", - "time_played": null, - "date_started": null - } -}, -{ - "model": "game_collection.playing", - "pk": 13, - "fields": { - "user": 1, - "game_version": 48, - "date_adquired": "2018-01-03", - "time_played": null, - "date_started": null - } -}, { "model": "game_collection.finished", "pk": 1, "fields": { - "user": 1, + "user": 2, "game_version": 21, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2589,8 +4189,9 @@ "model": "game_collection.finished", "pk": 2, "fields": { - "user": 1, + "user": 2, "game_version": 22, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2603,8 +4204,9 @@ "model": "game_collection.finished", "pk": 3, "fields": { - "user": 1, + "user": 2, "game_version": 23, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2617,8 +4219,9 @@ "model": "game_collection.finished", "pk": 4, "fields": { - "user": 1, + "user": 2, "game_version": 24, + "price": 0.0, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -2631,8 +4234,9 @@ "model": "game_collection.finished", "pk": 5, "fields": { - "user": 1, + "user": 2, "game_version": 25, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2645,8 +4249,9 @@ "model": "game_collection.finished", "pk": 6, "fields": { - "user": 1, + "user": 2, "game_version": 26, + "price": 0.0, "date_adquired": "2016-07-04", "time_played": null, "date_started": null, @@ -2659,8 +4264,9 @@ "model": "game_collection.finished", "pk": 7, "fields": { - "user": 1, + "user": 2, "game_version": 27, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2673,8 +4279,9 @@ "model": "game_collection.finished", "pk": 8, "fields": { - "user": 1, + "user": 2, "game_version": 28, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2687,8 +4294,9 @@ "model": "game_collection.finished", "pk": 9, "fields": { - "user": 1, + "user": 2, "game_version": 29, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2701,8 +4309,9 @@ "model": "game_collection.finished", "pk": 10, "fields": { - "user": 1, + "user": 2, "game_version": 30, + "price": 0.0, "date_adquired": "2016-06-30", "time_played": null, "date_started": null, @@ -2715,8 +4324,9 @@ "model": "game_collection.finished", "pk": 11, "fields": { - "user": 1, + "user": 2, "game_version": 31, + "price": 0.0, "date_adquired": "2016-12-21", "time_played": null, "date_started": null, @@ -2729,8 +4339,9 @@ "model": "game_collection.finished", "pk": 12, "fields": { - "user": 1, + "user": 2, "game_version": 32, + "price": 0.0, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -2743,8 +4354,9 @@ "model": "game_collection.finished", "pk": 13, "fields": { - "user": 1, + "user": 2, "game_version": 33, + "price": 0.0, "date_adquired": "2016-11-02", "time_played": null, "date_started": null, @@ -2757,8 +4369,9 @@ "model": "game_collection.finished", "pk": 14, "fields": { - "user": 1, + "user": 2, "game_version": 34, + "price": 0.0, "date_adquired": "2016-07-04", "time_played": null, "date_started": null, @@ -2771,8 +4384,9 @@ "model": "game_collection.finished", "pk": 15, "fields": { - "user": 1, + "user": 2, "game_version": 35, + "price": 0.0, "date_adquired": "2016-03-06", "time_played": null, "date_started": null, @@ -2785,8 +4399,9 @@ "model": "game_collection.finished", "pk": 16, "fields": { - "user": 1, + "user": 2, "game_version": 36, + "price": 0.0, "date_adquired": "2015-06-14", "time_played": null, "date_started": null, @@ -2799,8 +4414,9 @@ "model": "game_collection.finished", "pk": 17, "fields": { - "user": 1, + "user": 2, "game_version": 37, + "price": 0.0, "date_adquired": "2016-07-03", "time_played": null, "date_started": null, @@ -2809,40 +4425,13 @@ "playstyle": "" } }, -{ - "model": "game_collection.finished", - "pk": 18, - "fields": { - "user": 1, - "game_version": 50, - "date_adquired": "2016-08-27", - "time_played": null, - "date_started": null, - "date_finished": "2016-12-21", - "time_to_finish": null, - "playstyle": "" - } -}, -{ - "model": "game_collection.finished", - "pk": 19, - "fields": { - "user": 1, - "game_version": 51, - "date_adquired": "2016-07-04", - "time_played": null, - "date_started": null, - "date_finished": "2016-12-22", - "time_to_finish": null, - "playstyle": "" - } -}, { "model": "game_collection.played", "pk": 1, "fields": { - "user": 1, + "user": 2, "game_version": 38, + "price": 0.0, "date_adquired": "2014-09-23", "time_played": null, "date_started": null, @@ -2853,8 +4442,9 @@ "model": "game_collection.played", "pk": 2, "fields": { - "user": 1, + "user": 2, "game_version": 39, + "price": 0.0, "date_adquired": "2014-09-23", "time_played": null, "date_started": null, @@ -2865,8 +4455,9 @@ "model": "game_collection.played", "pk": 3, "fields": { - "user": 1, + "user": 2, "game_version": 40, + "price": 0.0, "date_adquired": null, "time_played": null, "date_started": null, @@ -2877,175 +4468,227 @@ "model": "game_collection.played", "pk": 4, "fields": { - "user": 1, + "user": 2, "game_version": 41, + "price": 0.0, "date_adquired": null, "time_played": null, "date_started": null, "date_stopped": null } }, -{ - "model": "game_collection.abandoned", - "pk": 1, - "fields": { - "user": 1, - "game_version": 49, - "date_adquired": null, - "time_played": null, - "date_started": null, - "date_abandoned": null - } -}, { "model": "game_collection.wishlist", "pk": 1, "fields": { - "user": 1, - "game_version": 52, - "date_added": "2019-11-17" + "user": 2, + "game_version": 46, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 2, "fields": { - "user": 1, - "game_version": 53, - "date_added": "2019-11-17" + "user": 2, + "game_version": 47, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 3, "fields": { - "user": 1, - "game_version": 54, - "date_added": "2019-11-17" + "user": 2, + "game_version": 48, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 4, "fields": { - "user": 1, - "game_version": 55, - "date_added": "2019-11-17" + "user": 2, + "game_version": 49, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 5, "fields": { - "user": 1, - "game_version": 56, - "date_added": "2019-11-17" + "user": 2, + "game_version": 50, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 6, "fields": { - "user": 1, - "game_version": 57, - "date_added": "2019-11-17" + "user": 2, + "game_version": 51, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 7, "fields": { - "user": 1, - "game_version": 58, - "date_added": "2019-11-17" + "user": 2, + "game_version": 52, + "date_added": "2019-11-18" } }, { "model": "game_collection.wishlist", "pk": 8, "fields": { - "user": 1, - "game_version": 59, - "date_added": "2019-11-17" + "user": 2, + "game_version": 53, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.wishlist", + "pk": 9, + "fields": { + "user": 2, + "game_version": 62, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.wishlist", + "pk": 10, + "fields": { + "user": 2, + "game_version": 63, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.wishlist", + "pk": 11, + "fields": { + "user": 2, + "game_version": 64, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 1, "fields": { - "user": 1, - "game_version": 60, - "date_added": "2019-11-17" + "user": 2, + "game_version": 54, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 2, "fields": { - "user": 1, - "game_version": 61, - "date_added": "2019-11-17" + "user": 2, + "game_version": 55, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 3, "fields": { - "user": 1, - "game_version": 62, - "date_added": "2019-11-17" + "user": 2, + "game_version": 56, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 4, "fields": { - "user": 1, - "game_version": 63, - "date_added": "2019-11-17" + "user": 2, + "game_version": 57, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 5, "fields": { - "user": 1, - "game_version": 64, - "date_added": "2019-11-17" + "user": 2, + "game_version": 58, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 6, "fields": { - "user": 1, - "game_version": 65, - "date_added": "2019-11-17" + "user": 2, + "game_version": 59, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 7, "fields": { - "user": 1, - "game_version": 66, - "date_added": "2019-11-17" + "user": 2, + "game_version": 60, + "date_added": "2019-11-18" } }, { "model": "game_collection.interested", "pk": 8, "fields": { - "user": 1, + "user": 2, + "game_version": 61, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.interested", + "pk": 9, + "fields": { + "user": 2, + "game_version": 65, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.interested", + "pk": 10, + "fields": { + "user": 2, + "game_version": 66, + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.interested", + "pk": 11, + "fields": { + "user": 2, "game_version": 67, - "date_added": "2019-11-17" + "date_added": "2019-11-18" + } +}, +{ + "model": "game_collection.interested", + "pk": 12, + "fields": { + "user": 2, + "game_version": 68, + "date_added": "2019-11-18" } }, { "model": "game_collection.tag", "pk": 1, "fields": { - "user": 1, + "user": 2, "name": "", "tag_group": null, "game_version": [ @@ -3115,7 +4758,8 @@ 64, 65, 66, - 67 + 67, + 68 ] } } From 5a8171d37037483cb4dad7d1c9134ae7190131ea Mon Sep 17 00:00:00 2001 From: Carlos Date: Mon, 18 Nov 2019 18:18:10 +0100 Subject: [PATCH 11/24] Game view updated --- game_collection/urls.py | 2 + game_collection/views.py | 27 +++- .../collection/tables/abandoned_table.html | 3 +- .../collection/tables/finished_table.html | 3 +- .../collection/tables/list_table.html | 3 +- .../collection/tables/played_table.html | 3 +- .../collection/tables/playing_table.html | 3 +- .../collection/tables/queue_table.html | 4 +- .../collection/tables/tag_table.html | 4 +- gamehoarder_site/templates/game_view.html | 132 ++++++++++++++++-- 10 files changed, 164 insertions(+), 20 deletions(-) diff --git a/game_collection/urls.py b/game_collection/urls.py index 5ea1b63..e1aa894 100644 --- a/game_collection/urls.py +++ b/game_collection/urls.py @@ -22,4 +22,6 @@ path('search', views.game_search, name='game_search'), path('tag/', views_tables.tag_table, name='tag_table'), + + path('game/', views.game_view, name='game_view'), ] diff --git a/game_collection/views.py b/game_collection/views.py index 5375902..8546cf7 100644 --- a/game_collection/views.py +++ b/game_collection/views.py @@ -360,4 +360,29 @@ def export_list(request): def game_search(request): - return render(request, 'index.html') \ No newline at end of file + return render(request, 'index.html') + +def game_view(request, id): + custom = Tag.objects.filter(user=request.user) + title = Game.objects.get(id=id) + genres = title.genres.all() + publishers = title.publishers.all() + developers = title.developers.all() + states = [['Played'], ['Playing'], ['Finished'], ['Abandoned'], ['Queue']] + game_version = GameVersion.objects.get(parent_game=title) + states[0].append(len(Played.objects.filter(game_version=game_version))) + states[1].append(len(Playing.objects.filter(game_version=game_version))) + states[2].append(len(Finished.objects.filter(game_version=game_version))) + states[3].append(len(Abandoned.objects.filter(game_version=game_version))) + states[4].append(len(Queue.objects.filter(game_version=game_version))) + + context = { + "tags": custom, + "genres": genres, + "publishers": publishers, + "developers": developers, + "states": states, + "title": title + } + + return render(request, 'game_view.html', context) \ No newline at end of file diff --git a/gamehoarder_site/templates/collection/tables/abandoned_table.html b/gamehoarder_site/templates/collection/tables/abandoned_table.html index fc7178a..277f03b 100644 --- a/gamehoarder_site/templates/collection/tables/abandoned_table.html +++ b/gamehoarder_site/templates/collection/tables/abandoned_table.html @@ -67,7 +67,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {% if title.time_played is not None %} diff --git a/gamehoarder_site/templates/collection/tables/finished_table.html b/gamehoarder_site/templates/collection/tables/finished_table.html index 65a804b..4757e09 100644 --- a/gamehoarder_site/templates/collection/tables/finished_table.html +++ b/gamehoarder_site/templates/collection/tables/finished_table.html @@ -67,7 +67,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {% if title.time_played is not None %} diff --git a/gamehoarder_site/templates/collection/tables/list_table.html b/gamehoarder_site/templates/collection/tables/list_table.html index b3c5534..2af8d34 100644 --- a/gamehoarder_site/templates/collection/tables/list_table.html +++ b/gamehoarder_site/templates/collection/tables/list_table.html @@ -55,7 +55,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {{ title.game_version.parent_game.main_time }} diff --git a/gamehoarder_site/templates/collection/tables/played_table.html b/gamehoarder_site/templates/collection/tables/played_table.html index 4565276..aba8fdb 100644 --- a/gamehoarder_site/templates/collection/tables/played_table.html +++ b/gamehoarder_site/templates/collection/tables/played_table.html @@ -66,7 +66,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {% if title.time_played is not None %} diff --git a/gamehoarder_site/templates/collection/tables/playing_table.html b/gamehoarder_site/templates/collection/tables/playing_table.html index 258856d..48749eb 100644 --- a/gamehoarder_site/templates/collection/tables/playing_table.html +++ b/gamehoarder_site/templates/collection/tables/playing_table.html @@ -61,7 +61,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {{ title.game_version.parent_game.main_time }} diff --git a/gamehoarder_site/templates/collection/tables/queue_table.html b/gamehoarder_site/templates/collection/tables/queue_table.html index a59f7e3..2adc490 100644 --- a/gamehoarder_site/templates/collection/tables/queue_table.html +++ b/gamehoarder_site/templates/collection/tables/queue_table.html @@ -54,8 +54,8 @@

{% trans "Titles" %}

{{ title.game_version.platform.name }} - - {{ title.game_version.parent_game.title }} + + {{ title.game_version.parent_game.title }} {{ title.game_version.parent_game.main_time }} diff --git a/gamehoarder_site/templates/collection/tables/tag_table.html b/gamehoarder_site/templates/collection/tables/tag_table.html index c7b2b7e..1fbd242 100644 --- a/gamehoarder_site/templates/collection/tables/tag_table.html +++ b/gamehoarder_site/templates/collection/tables/tag_table.html @@ -48,8 +48,8 @@

{% trans "Titles" %}

{{ title.platform.name }} - - {{ title.parent_game.title }} + + {{ title.parent_game.title }} {{ title.parent_game.main_time }} diff --git a/gamehoarder_site/templates/game_view.html b/gamehoarder_site/templates/game_view.html index f7e5884..4a81035 100644 --- a/gamehoarder_site/templates/game_view.html +++ b/gamehoarder_site/templates/game_view.html @@ -1,10 +1,122 @@ - - - - - $Title$ - - -$END$ - - \ No newline at end of file +{% extends "base_site.html" %} + +{% block title %} Game View {% endblock title %} + +{% block stylesheets %} + {{ block.super }} +{% endblock stylesheets %} + +{% block content %} +
+ +
+
+
+

Game Overview

+
+ +
+ +
+ +
+
+
+ +
+ +
+
+ ... +
+
+ +
+ +

{{ title.title }}

+ +

{{ title.description }}

+
+ +

Release Date: {% if title.release_date is not None %} + {{ title.release_date }} + {% endif %}

+ +
+ +
+

Publishers:

+
    + {% for publisher in publishers %} +
  • + +
  • + {% endfor %} +
+
+
+ +
+

Developers:

+
    + {% for developer in developers %} +
  • + +
  • + {% endfor %} +
+
+
+ +
+

Genres:

+
    + {% for genre in genres %} +
  • + +
  • + {% endfor %} +
+
+
+ +
+

Main time: {{ title.main_time }}h

+

Extra time: {{ title.extra_time }}h

+

Completion time: {{ title.completion_time }}h

+
+
+
+

State:

+
    + {% for state in states %} +
  • + {% if state.1 == 0 %} + + {% else %} + + {% endif %} +
  • + {% endfor %} +
+
+
+
+ + +
+ +
+ + +
+
+
+
+
+
+{% endblock content %} + +{% block javascripts %} + {{ block.super }} +{% endblock javascripts %} From bec8b9df359e42ead0d3604ce5d9c42f29312846 Mon Sep 17 00:00:00 2001 From: mikelsr Date: Mon, 18 Nov 2019 19:47:43 +0100 Subject: [PATCH 12/24] Start search function --- gamehoarder_site/templates/sidebar.html | 2 +- gamehoarder_site/urls.py | 2 ++ gamehoarder_site/views.py | 45 +++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/gamehoarder_site/templates/sidebar.html b/gamehoarder_site/templates/sidebar.html index ee8971d..cf5fe21 100644 --- a/gamehoarder_site/templates/sidebar.html +++ b/gamehoarder_site/templates/sidebar.html @@ -35,7 +35,7 @@

{% trans "Collection" %}