1
0

Neu: Gronkh Games Suche

This commit is contained in:
Akamaru 2025-03-10 19:07:36 +01:00
parent e6cf4fd21f
commit 0ff5fbf83a
11 changed files with 5905 additions and 1 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
/shape_shifter
/pokemon_quiz/images/gen*
gronkh_games/get_playlists.py
/gronkh_games/venv

BIN
gronkh_games/gronkh.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,102 @@
[
{
"title": "Sim City [PC] [1989]",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7eSphzM5kMTSvB2o1yrdN6"
},
{
"title": "Crossing Souls",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON43TfvU9XhHGkePbbrALEZj"
},
{
"title": "Leisure Suit Larry 3: Passionate Patty in Pursuit of the Pulsating Pectorals (1989)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON5XPq2LsyYnNeI46kBd4wU3"
},
{
"title": "Leisure Suit Larry 2: Looking for Love (1988)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON6b-eundWMGTCStzZjBS23F"
},
{
"title": "King's Quest (2015)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON5WA2U9596MXFuO1Xt-7TrO"
},
{
"title": "Leisure Suit Larry 1: Reloaded (2013)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON6YfXaWcHUM-pikb_z21yQ8"
},
{
"title": "Leisure Suit Larry 1: Land of the Lounge Lizards (SCI) (1991)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7fW28gzpHFEp5lubZvp4my"
},
{
"title": "Leisure Suit Larry 1: Land of the Lounge Lizards (AGI) (1987)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7Q8FYI4X_uHIckTrorls-q"
},
{
"title": "Thimbleweed Park (2016)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON5L0GyGpA0TgE3mXP34smQH"
},
{
"title": "King's Quest IV: The Perils of Rosella (SCI) (1988)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON6oc9dagBv18wCxqOsFuyaT"
},
{
"title": "King's Quest III: To Heir Is Human (AGI) (1986)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON43xEGBTGjdOg7zwa3ZljXS"
},
{
"title": "King's Quest II: Romancing The Throne (AGI) (1985)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7cLpovr0xntlhkZgGQBs3K"
},
{
"title": "King's Quest I: Quest For The Crown (AGI) (1984)",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON4d6Sw71fEd85PVmV2v-X5v"
},
{
"title": "Drawn 1: The Painted Tower",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON6lDLc0jfiC3ZPenRKfFp7i"
},
{
"title": "LOOM",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON4TtCigzbiPybgCPhT0_7QK"
},
{
"title": "Eternally Us",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7q-Vb_Z8CIWpvlwbFQ_ZBb"
},
{
"title": "Vollgas: Full Throttle",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON4DMKzPCYn1rMnfCTETSWME"
},
{
"title": "Sam & Max: Hit the Road",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON6eOpfjG0_XGaqryup_892E"
},
{
"title": "Day of the Tentacle",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON4Tuelt35mbcxO18U1fRxPr"
},
{
"title": "The Legend of Kyrandia 2: Hand of Fate",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON5vgQAJEPHE3FSU48I6Bo48"
},
{
"title": "The Legend of Kyrandia 1",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON5myaIaHCWXeHIiNKhjp2hX"
},
{
"title": "Monkey Island 4: Flucht von Monkey Island",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON42ULzUa0xJqiY_jICWlpDQ"
},
{
"title": "Monkey Island 3: The Curse of Monkey Island",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON4NkTAaMPm_pzH9Us-7_z7a"
},
{
"title": "Monkey Island 2: LeChuck's Revenge",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON75NIf2-ljxyLl2cy0iN3Eo"
},
{
"title": "Monkey Island 1: The Secret of Monkey Island",
"url": "https://www.youtube.com/playlist?list=PLLAIg3KRKON7VWqJ2WmKdK84liTT3iajW"
}
]

View File

@ -0,0 +1,170 @@
[
{
"title": "ELEX 2",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypAcvYwx5HkIosIRu0XGkKj"
},
{
"title": "ELEX",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yoDGGw3j6xZXhoaNHQ07SGz"
},
{
"title": "Skyrim 2020",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypDxNBivk_2fMfYwFzh65RM"
},
{
"title": "Grim Dawn",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yockIXBWE_vN3HiowK2iEk7"
},
{
"title": "Ni No Kuni",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yp2WnaogPb4AHMYta6Hbm7-"
},
{
"title": "The Witcher 3: Blood & Wine",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yphGapng3KAF5fMACej-ink"
},
{
"title": "The Witcher 3 (Preview)",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yq8imIPDQM6m316agSwi0b9"
},
{
"title": "The Witcher 3: Wild Hunt",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yow5M7v_wOXckSOecNveNe6"
},
{
"title": "World of Warcraft: Mists of Pandaria",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypmlJ4YXbY0LatBVVZ2TG_q"
},
{
"title": "World of Warcraft",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yooIpCnPIEzHQwEfll1UqPX"
},
{
"title": "The Witcher 3: Hearts of Stone",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypoIrWbonpOfzQWHJBk75J-"
},
{
"title": "Doom & Destiny",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqGUvw6MI7Uj8qRrlSvX7wV"
},
{
"title": "Pixel Heroes: Byte & Magic",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yp4EQn7PpRSc_QcCHDP6Hv3"
},
{
"title": "Mittelerde: Mordors Schatten",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3youbYwna-ze6ZFSURPGH0IA"
},
{
"title": "Kingdoms of Amalur: Reckoning",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrw8u-WV9r-Cay9E1Y-C-4N"
},
{
"title": "South Park: Der Stab der Wahrheit",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypLHf4-jqsdgwfrfnfuEmFe"
},
{
"title": "A Bird Story",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrCYN0Gwze1Wgg_1fBPJi6E"
},
{
"title": "To the Moon",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqgIbTzMhSOyiQvpF4wx0Mz"
},
{
"title": "Kingdom Come: Deliverance (Preview)",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yo_ey7ghncNTIDHwSAefWp1"
},
{
"title": "Hammerwatch",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3ypyZB3Vx8OYGpvmy0sH8kTq"
},
{
"title": "Torchlight",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yr0ZxQTNBCGvSxSWwSWDzyc"
},
{
"title": "Dragon's Prophet",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqhWHVxQYiQln9nr-53XO94"
},
{
"title": "Neverwinter",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yq28OGjgembAU_bUqhvdTHu"
},
{
"title": "Atlantica Online",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yr2W43Jl4ThPOLeDOuxu1jU"
},
{
"title": "Runes of Magic",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yq5d-WU9crM9HoaGdQjRmzE"
},
{
"title": "Battle of the Immortals",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqmjozXBIXcE3leLvnLDxD0"
},
{
"title": "Allods Online",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrPHbJlJ7TTkbH-HlAaC6K1"
},
{
"title": "Diablo 3: Reaper of Souls",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yoFbyhXz6T_n4s6WdB8sNkf"
},
{
"title": "Diablo 3",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrdNSWey0BBKnRlJnfxMOre"
},
{
"title": "Risen 3: Preview",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yq-a_dK67hW_60gaziurofu"
},
{
"title": "Dragon Age 2",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqheytao1NufmZavbZWQDdR"
},
{
"title": "Fable 3",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yoAk8ZJrBQlLSbyQZACYZnk"
},
{
"title": "Fable 2",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrjjVlKxZgMUMjVty4vfS6X"
},
{
"title": "Fable 1: The Lost Chapters",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yq6ZrxCMYQoaXkOJMG5pYaW"
},
{
"title": "Dragon Age: Origins - Hexenjagd",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrEA9v8OoCXPldqedcapmux"
},
{
"title": "Dragon Age: Origins - Die Golems von Amgarrak",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqB7qCTysq3FEKHFV_-AAMO"
},
{
"title": "Dragon Age: Origins - Lelianas Lied",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yqhEGJvo2r3TTRIBIqPNRIB"
},
{
"title": "Dragon Age: Origins - Chroniken der Dunklen Brut",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrpFrVJ1gXBg1vIk8LkIACY"
},
{
"title": "Dragon Age: Origins - Awakening",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yoLawd8xRXDoaoHyGEkGqS3"
},
{
"title": "Risen 3: Titan Lords",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yov8DVkEC0QFtOL82795f_u"
},
{
"title": "Risen 2: Dark Waters",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrlH8P8wtbittNWuI-BhYzK"
},
{
"title": "Risen 1",
"url": "https://www.youtube.com/playlist?list=PLG7fOCeDa3yrGk-6v8gx-2h_r51yu9rtJ"
}
]

View File

@ -0,0 +1,50 @@
[
{
"title": "#MiMO: Minecraft Monday",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3zlgUWFxUABwTIYOl7pO6rq"
},
{
"title": "#FREiAB18",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3xWoyYFLcwnqnLEggcvHi-0"
},
{
"title": "GRONKH LiVESTREAMS 🔴 Alle Streams in ganzer Länge",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3zp8bgyRVqTEqmQTyLG1y7k"
},
{
"title": "gronkhTV LIVE 010 ★ 22.02.2015 ★ KaffeeKranZ 1: Besiege & Happy Wheels",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3zTOCTOBjxooD_rHBkRufzh"
},
{
"title": "gronkhTV LIVE 009 ★ 06.02.2015 ★ One Finger Death Punch, Oculus Rift & STAIRS",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3xNQQ03RAYb9RErOMrk0nii"
},
{
"title": "gronkhTV LIVE 007 ★ 23.01.2015 ★ Stranded Deep & The Escapists",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3yU39EbFmvyhZi_0nG1qghA"
},
{
"title": "gronkhTV LIVE 006 ★ 16.01.2015 ★ #LaFamilia #GELDWÄSCHE",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3xM92fOqMdJ4DnPq6NMjxVh"
},
{
"title": "gronkhTV LIVE 005 ★ 10.01.2015 ★ MINECRAFT: Let's Show-Welt Revisited",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3xc61DFRgb4e9FSeW3s1Ode"
},
{
"title": "gronkhTV LIVE 004 ★ 09.01.2015 ★ UNITYMEDIA WARTESCHLEIFEN-RAVE",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3w2GrLpbcM7NMj__rHHBAro"
},
{
"title": "gronkhTV LIVE 003 ★ 06.01.2015 ★ Der 4stündige 10-Minuten-Livestream",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3yCl60juaFby4UzzKLi-t4C"
},
{
"title": "gronkhTV LIVE 001 ★ 10.12.2014 ★ 'Snurn Test",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3xP2SHlAekQIwEum5LBOUnn"
},
{
"title": "gronkhTV LIVE 002 ★ 26.12.2014 ★ Weihnachts-Special 2014",
"url": "https://www.youtube.com/playlist?list=PLpvcKPE8wS3zD-NsubPW_985JmP7SOhPN"
}
]

View File

@ -0,0 +1,26 @@
[
{
"title": "Let's Sing",
"url": "https://www.youtube.com/playlist?list=PL88B91BA7D21C57C2"
},
{
"title": "Tutorials",
"url": "https://www.youtube.com/playlist?list=PL65BCBBAD1C24F543"
},
{
"title": "Unboxings",
"url": "https://www.youtube.com/playlist?list=PL72DC7AC1C76DE5AB"
},
{
"title": "Let's Talk",
"url": "https://www.youtube.com/playlist?list=PLF7E4F9056A9680EA"
},
{
"title": "Let's Read",
"url": "https://www.youtube.com/playlist?list=PL56A13031D0E65CFE"
},
{
"title": "Let's Sing (Snippets)",
"url": "https://www.youtube.com/playlist?list=PL3F2EECD9929946D9"
}
]

493
gronkh_games/index.html Normal file
View File

@ -0,0 +1,493 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gronkh Games Suche</title>
<!-- Open Graph Tags -->
<meta property="og:title" content="Gronkh Games Suche">
<meta property="og:description" content="Durchsuche Spiele, die Gronkh auf seinem YouTube-Kanal gespielt hat.">
<meta property="og:url" content="https://tools.ponywave.de/gronkh_games">
<meta property="og:type" content="website">
<meta property="og:image" content="https://tools.ponywave.de/gronkh_games/gronkh.jpg">
<link rel="icon" href="https://tools.ponywave.de/gronkh_games/gronkh.jpg" type="image/jpg">
<!-- Analytics -->
<script defer src="https://stats.ponywave.de/script" data-website-id="9ef713d2-adb9-4906-9df5-708d8a8b9131" data-tag="gronkh_games"></script>
<style>
:root {
--primary-color: #6a329f;
--secondary-color: #8a5cb5;
--accent-color: #4a1979;
--background-color: #f5f0fa;
--canvas-background: #ffffff;
--text-color: #333333;
--footer-background: #333333;
--footer-text: #ffffff;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
body {
background-color: var(--background-color);
color: var(--text-color);
line-height: 1.6;
display: flex;
flex-direction: column;
min-height: 100vh;
}
header {
background-color: var(--primary-color);
color: white;
text-align: center;
padding: 2rem 1rem;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
h1 {
font-size: 2.5rem;
margin-bottom: 0.5rem;
}
main {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
flex: 1;
width: 100%;
}
.search-container {
margin-bottom: 2rem;
display: flex;
flex-direction: column;
align-items: center;
}
.search-box {
display: flex;
width: 100%;
max-width: 600px;
margin-bottom: 1rem;
}
#search-input {
flex: 1;
padding: 12px 20px;
font-size: 1rem;
border: 2px solid var(--secondary-color);
border-radius: 4px 0 0 4px;
outline: none;
}
#search-button {
background-color: var(--primary-color);
color: white;
border: none;
border-radius: 0 4px 4px 0;
padding: 0 20px;
cursor: pointer;
font-size: 1rem;
transition: background-color 0.3s;
}
#search-button:hover {
background-color: var(--accent-color);
}
.channel-selector {
margin-bottom: 1.5rem;
text-align: center;
width: 100%;
max-width: 600px;
}
.channel-selector h3 {
margin-bottom: 0.5rem;
font-size: 1.2rem;
}
.channel-buttons {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 10px;
}
.channel-button {
background-color: var(--canvas-background);
color: var(--primary-color);
border: 2px solid var(--secondary-color);
border-radius: 4px;
padding: 8px 15px;
cursor: pointer;
font-weight: 500;
transition: all 0.2s;
}
.channel-button:hover {
background-color: var(--secondary-color);
color: white;
}
.channel-button.active {
background-color: var(--primary-color);
color: white;
}
.update-info {
color: #666;
font-style: italic;
text-align: center;
margin-bottom: 1rem;
margin-top: 1rem;
}
.game-section {
margin-bottom: 3rem;
}
.game-container {
background-color: var(--canvas-background);
border-radius: 8px;
padding: 1.5rem;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 1rem;
}
.game-list {
list-style-type: none;
}
.game-item {
padding: 12px 15px;
border-bottom: 1px solid #eee;
transition: background-color 0.2s;
}
.game-item:last-child {
border-bottom: none;
}
.game-item:hover {
background-color: #f5f5f5;
}
.game-item a {
color: var(--primary-color);
text-decoration: none;
display: block;
font-weight: 500;
}
.game-item a:hover {
text-decoration: underline;
}
footer {
background-color: var(--footer-background);
color: var(--footer-text);
text-align: center;
padding: 1.5rem;
margin-top: auto;
}
footer a {
color: #ccc;
text-decoration: none;
}
footer a:hover {
color: white;
text-decoration: underline;
}
.heart {
color: #ff6b6b;
}
.loading {
text-align: center;
padding: 20px;
font-style: italic;
color: #666;
}
@media (max-width: 768px) {
header {
padding: 1.5rem 1rem;
}
h1 {
font-size: 2rem;
}
main {
padding: 1.5rem;
}
.game-container {
padding: 1rem;
}
.channel-buttons {
flex-direction: column;
align-items: center;
}
.channel-button {
width: 100%;
max-width: 200px;
margin-bottom: 5px;
}
}
</style>
</head>
<body>
<header>
<h1>Gronkh Games Suche</h1>
<p>Finde alle Spiele, die Gronkh auf YouTube gespielt hat</p>
</header>
<main>
<div class="search-container">
<div class="channel-selector">
<h3>Wähle einen Kanal:</h3>
<div class="channel-buttons">
<button class="channel-button active" data-channel="all">Alle Kanäle</button>
<button class="channel-button" data-channel="gronkh">Gronkh</button>
<button class="channel-button" data-channel="gronkhretro">GronkhRetro</button>
<button class="channel-button" data-channel="gronkhrpgs">GronkhRPGs</button>
<button class="channel-button" data-channel="gronkhtv">GronkhTV</button>
<button class="channel-button" data-channel="gronkhzeugs">GronkhZeugs</button>
</div>
</div>
<div class="search-box">
<input type="text" id="search-input" placeholder="Spielname eingeben..." aria-label="Spielname eingeben">
<button id="search-button">Suchen</button>
</div>
<p class="update-info">Spieleliste zuletzt aktualisiert am 10.03.2025</p>
</div>
<div class="game-section">
<h2>Suchergebnisse</h2>
<div class="game-container" id="search-results">
<p id="no-results-message">Gib einen Suchbegriff ein, um Spiele zu finden.</p>
<ul class="game-list" id="results-list" style="display: none;"></ul>
</div>
</div>
<div class="game-section">
<h2>Neuste Spiele</h2>
<div class="game-container">
<ul class="game-list" id="newest-list">
<li class="loading">Lade neuste Spiele...</li>
</ul>
</div>
</div>
<div class="game-section">
<h2>Zufällige Spiele</h2>
<div class="game-container">
<ul class="game-list" id="random-list">
<li class="loading">Lade zufällige Spiele...</li>
</ul>
</div>
</div>
</main>
<footer>
<p><a href="https://tools.ponywave.de/">Zurück zur Startseite</a> | &copy; <span id="current-year"></span> Akamaru | Made with <span class="heart">❤️</span> by Claude</p>
</footer>
<script>
// Kanal-Optionen
const channels = {
all: 'playlists.json',
gronkh: 'gronkh_playlists.json',
gronkhretro: 'gronkhretro_playlists.json',
gronkhrpgs: 'gronkhrpgs_playlists.json',
gronkhtv: 'gronkhtv_playlists.json',
gronkhzeugs: 'gronkhzeugs_playlists.json'
};
// Standard-Kanal
let currentChannel = 'all';
let allGames = {}; // Cache für alle geladenen Spiele
// Daten aus JSON-Datei laden
async function loadGames(channel = currentChannel) {
try {
if (allGames[channel]) {
return allGames[channel]; // Cache nutzen, wenn Daten bereits geladen sind
}
const response = await fetch(channels[channel]);
if (!response.ok) {
throw new Error(`Fehler beim Laden der ${channel} Spieldaten`);
}
const games = await response.json();
allGames[channel] = games; // Ergebnisse im Cache speichern
return games;
} catch (error) {
console.error('Fehler:', error);
return [];
}
}
// Aktuelle Jahreszahl im Footer einfügen
document.getElementById('current-year').textContent = new Date().getFullYear();
// Kanalauswahl-Buttons einrichten
function setupChannelButtons() {
const channelButtons = document.querySelectorAll('.channel-button');
channelButtons.forEach(button => {
button.addEventListener('click', async () => {
// Aktiven Button markieren
channelButtons.forEach(btn => btn.classList.remove('active'));
button.classList.add('active');
// Kanal wechseln und Listen neu laden
currentChannel = button.dataset.channel;
await updateLists();
// Suchergebnisse zurücksetzen
document.getElementById('results-list').style.display = 'none';
document.getElementById('no-results-message').textContent = 'Gib einen Suchbegriff ein, um Spiele zu finden.';
document.getElementById('no-results-message').style.display = 'block';
});
});
}
// Listen neu laden
async function updateLists() {
// Lade-Indikatoren anzeigen
document.getElementById('newest-list').innerHTML = '<li class="loading">Lade neuste Spiele...</li>';
document.getElementById('random-list').innerHTML = '<li class="loading">Lade zufällige Spiele...</li>';
const games = await loadGames();
if (!games || games.length === 0) {
document.getElementById('newest-list').innerHTML = '<li>Keine Spiele gefunden</li>';
document.getElementById('random-list').innerHTML = '<li>Keine Spiele gefunden</li>';
return;
}
updateNewestList(games);
updateRandomList(games);
}
// Neuste Spiele anzeigen
function updateNewestList(games) {
const newestList = document.getElementById('newest-list');
newestList.innerHTML = '';
const newestGames = games.slice(0, 5);
if (newestGames.length === 0) {
newestList.innerHTML = '<li>Keine neuen Spiele gefunden</li>';
return;
}
newestGames.forEach(game => {
const li = document.createElement('li');
li.className = 'game-item';
li.innerHTML = `<a href="${game.url}" target="_blank">${game.title}</a>`;
newestList.appendChild(li);
});
}
// Zufällige Spiele anzeigen
function updateRandomList(games) {
const randomList = document.getElementById('random-list');
randomList.innerHTML = '';
if (games.length === 0) {
randomList.innerHTML = '<li>Keine Spiele gefunden</li>';
return;
}
const shuffledGames = [...games].sort(() => 0.5 - Math.random());
const randomGames = shuffledGames.slice(0, 5);
randomGames.forEach(game => {
const li = document.createElement('li');
li.className = 'game-item';
li.innerHTML = `<a href="${game.url}" target="_blank">${game.title}</a>`;
randomList.appendChild(li);
});
}
// Suchfunktion
async function performSearch() {
const searchTerm = document.getElementById('search-input').value.trim().toLowerCase();
const resultsList = document.getElementById('results-list');
const noResultsMessage = document.getElementById('no-results-message');
if (!searchTerm) {
resultsList.style.display = 'none';
noResultsMessage.textContent = 'Gib einen Suchbegriff ein, um Spiele zu finden.';
noResultsMessage.style.display = 'block';
return;
}
// Spiele für aktuellen Kanal laden
const games = await loadGames();
// Spiele filtern, die dem Suchbegriff entsprechen
const matchingGames = games.filter(game =>
game.title.toLowerCase().includes(searchTerm)
);
resultsList.innerHTML = '';
if (matchingGames.length === 0) {
resultsList.style.display = 'none';
noResultsMessage.textContent = 'Keine Spiele gefunden, die zum Suchbegriff passen.';
noResultsMessage.style.display = 'block';
return;
}
// Zeige maximal 5 Suchergebnisse an
const displayGames = matchingGames.slice(0, 5);
displayGames.forEach(game => {
const li = document.createElement('li');
li.className = 'game-item';
li.innerHTML = `<a href="${game.url}" target="_blank">${game.title}</a>`;
resultsList.appendChild(li);
});
noResultsMessage.style.display = 'none';
resultsList.style.display = 'block';
}
// Seiteninitalisierung
async function initializePage() {
// Kanalauswahl einrichten
setupChannelButtons();
// Such-Button und Enter-Taste
document.getElementById('search-button').addEventListener('click', performSearch);
document.getElementById('search-input').addEventListener('keyup', event => {
if (event.key === 'Enter') performSearch();
});
// Initiale Listen laden
await updateLists();
}
// Beim Laden der Seite initialisieren
document.addEventListener('DOMContentLoaded', initializePage);
</script>
</body>
</html>

2698
gronkh_games/playlists.json Normal file

File diff suppressed because it is too large Load Diff

View File

@ -205,6 +205,10 @@
<h2 class="tool-title">Kemono Friends Logo Generator</h2>
<p class="tool-description">Generiere Logos im Kemono Friends Stil</p>
</a>
<a href="https://tools.ponywave.de/gronkh_games" class="tool-bubble">
<h2 class="tool-title">Gronkh Games Suche</h2>
<p class="tool-description">Durchsuche Spiele, die Gronkh auf YouTube gespielt hat</p>
</a>
</div>
</div>

View File

@ -18,4 +18,5 @@ https://tools.ponywave.de/pinkie_timer
https://tools.ponywave.de/depp_gpt
https://tools.ponywave.de/emoji
https://tools.ponywave.de/banana_run
https://tools.ponywave.de/pokemon_quiz
https://tools.ponywave.de/pokemon_quiz
https://tools.ponywave.de/gronkh_games