Fixed inconsistent handling of "No results found" and "End of results" messages
Some checks failed
Run Integration Tests / test (push) Failing after 36s

This commit is contained in:
partisan 2025-06-16 10:11:05 +02:00
parent 47f197cf15
commit 70abf0a2bd
13 changed files with 775 additions and 573 deletions

View file

@ -65,6 +65,7 @@ func handleMusicSearch(w http.ResponseWriter, settings UserSettings, query strin
"Page": page, "Page": page,
"HasPrevPage": page > 1, "HasPrevPage": page > 1,
"HasNextPage": len(results) >= 10, // Default page size "HasNextPage": len(results) >= 10, // Default page size
"NoResults": len(results) == 0,
"MusicServices": getMusicServiceNames(), "MusicServices": getMusicServiceNames(),
"CurrentService": "all", // Default service "CurrentService": "all", // Default service
"Theme": settings.Theme, "Theme": settings.Theme,

View file

@ -1,7 +1,7 @@
/* /*
This script is responsible for fetching new results on the same page when the user scrolls to the bottom of the page. This script is responsible for fetching new results on the same page when the user scrolls to the bottom of the page.
*/ */
document.addEventListener("DOMContentLoaded", function() { document.addEventListener("DOMContentLoaded", function () {
const templateData = document.getElementById('template-data'); const templateData = document.getElementById('template-data');
let page = parseInt(templateData.getAttribute('data-page')) || 1; let page = parseInt(templateData.getAttribute('data-page')) || 1;
const query = templateData.getAttribute('data-query') || ''; const query = templateData.getAttribute('data-query') || '';
@ -20,50 +20,39 @@ document.addEventListener("DOMContentLoaded", function() {
} }
function loadResults(newPage) { function loadResults(newPage) {
if (loading || !hasMoreResults) return; if (loading || !hasMoreResults || hasEndOrNoResultsMessage()) return;
loading = true;
// Show loading indicator if taking more than 150ms loading = true;
loadingTimeout = setTimeout(() => { loadingTimeout = setTimeout(() => showLoadingMessage(), 150);
showLoadingMessage()
}, 150);
fetch(`/search?q=${encodeURIComponent(query)}&t=${encodeURIComponent(searchType)}&p=${newPage}`) fetch(`/search?q=${encodeURIComponent(query)}&t=${encodeURIComponent(searchType)}&p=${newPage}`)
.then(response => { .then(response => {
if (!response.ok) { if (!response.ok) throw new Error('Network response was not ok');
throw new Error('Network response was not ok');
}
return response.text(); return response.text();
}) })
.then(data => { .then(data => {
clearTimeout(loadingTimeout); clearTimeout(loadingTimeout);
hideLoadingMessage() hideLoadingMessage();
const parser = new DOMParser(); const parser = new DOMParser();
const doc = parser.parseFromString(data, 'text/html'); const doc = parser.parseFromString(data, 'text/html');
const newResultsHTML = doc.getElementById('results').innerHTML; const newResults = doc.querySelectorAll('#results > *');
const noResultsMessage = `No results found for '${query}'. Try different keywords.`;
const endOfResultsMessage = "Looks like this is the end of results.";
const serverError = "Internal Server Error";
const resultsContainer = document.getElementById('results'); const resultsContainer = document.getElementById('results');
const tempDiv = document.createElement('div');
tempDiv.innerHTML = newResultsHTML; if (newResults.length === 0) {
while (tempDiv.firstChild) { hasMoreResults = false;
resultsContainer.appendChild(tempDiv.firstChild); loading = false;
return;
} }
if (newResultsHTML.includes(noResultsMessage) || newResultsHTML.includes(endOfResultsMessage) || newResultsHTML.includes(serverError)) { newResults.forEach(el => resultsContainer.appendChild(el));
hasMoreResults = false;
} else {
page = newPage; page = newPage;
// Automatically load more results if content height is less than window height
checkIfMoreResultsNeeded(); checkIfMoreResultsNeeded();
}
loading = false; loading = false;
}) })
.catch(error => { .catch(error => {
clearTimeout(loadingTimeout); clearTimeout(loadingTimeout);
hideLoadingMessage() hideLoadingMessage();
console.error('Error loading results:', error); console.error('Error loading results:', error);
hasMoreResults = false; hasMoreResults = false;
loading = false; loading = false;
@ -71,11 +60,17 @@ document.addEventListener("DOMContentLoaded", function() {
} }
function checkIfMoreResultsNeeded() { function checkIfMoreResultsNeeded() {
if (document.body.scrollHeight <= window.innerHeight && hasMoreResults) { if (!hasMoreResults || hasEndOrNoResultsMessage()) return;
if (document.body.scrollHeight <= window.innerHeight) {
loadResults(page + 1); loadResults(page + 1);
} }
} }
function hasEndOrNoResultsMessage() {
return !!document.querySelector('.no-results-found');
}
window.addEventListener('scroll', () => { window.addEventListener('scroll', () => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight) { if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
loadResults(page + 1); loadResults(page + 1);
@ -88,7 +83,7 @@ document.addEventListener("DOMContentLoaded", function() {
console.error("No search buttons found"); console.error("No search buttons found");
} else { } else {
buttons.forEach(btn => { buttons.forEach(btn => {
btn.addEventListener('click', function() { btn.addEventListener('click', function () {
const activeElement = document.querySelector('.search-container-results-btn .search-active'); const activeElement = document.querySelector('.search-container-results-btn .search-active');
if (activeElement) { if (activeElement) {
activeElement.classList.remove('search-active'); activeElement.classList.remove('search-active');

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -11,32 +12,38 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -49,7 +56,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -61,10 +69,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -78,13 +83,22 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" herf="/"> <div class="logo-container" herf="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
<div class="wrapper-results"> <div class="wrapper-results">
<input type="text" name="q" value="{{ .Query }}" id="search-input" /> <input type="text" name="q" value="{{ .Query }}" id="search-input" />
<button id="search-wrapper-ico" class="material-icons-round" name="t" value="file">&#xe8b6;</button> <!-- Search icon --> <button id="search-wrapper-ico" class="material-icons-round" name="t" value="file">&#xe8b6;</button>
<!-- Search icon -->
<div class="autocomplete"> <div class="autocomplete">
<ul></ul> <ul></ul>
</div> </div>
@ -92,39 +106,45 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <!-- Search icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button> <!-- Search icon -->
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <!-- Image icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button> <!-- Image icon -->
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <!-- Video icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button> <!-- Video icon -->
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <!-- Forum icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button> <!-- Forum icon -->
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <!-- Map icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button> <!-- Map icon -->
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="file">&#xe80d;</button> <!-- Share (file) icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="file">&#xe80d;</button> <!-- Share (file) icon -->
<button name="t" value="file" class="clickable search-active">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable search-active">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
</form> </form>
{{ if .Results }}
<form action="/search" class="torrent-sort" method="GET"> <form action="/search" class="torrent-sort" method="GET">
<input type="hidden" name="q" value="{{ .Query }}"> <input type="hidden" name="q" value="{{ .Query }}">
<input type="hidden" name="t" value="file"> <input type="hidden" name="t" value="file">
@ -136,13 +156,19 @@
</select> </select>
<select class="torrent-cat" name="cat"> <select class="torrent-cat" name="cat">
<option value="all" {{ if eq .Category "all" }} selected {{ end }}>{{ translate "category_all" }}</option> <option value="all" {{ if eq .Category "all" }} selected {{ end }}>{{ translate "category_all" }}</option>
<option value="movie" {{ if eq .Category "movie" }} selected {{ end }}>{{ translate "category_movie" }}</option> <option value="movie" {{ if eq .Category "movie" }} selected {{ end }}>{{ translate "category_movie" }}
<option value="audiobook" {{ if eq .Category "audiobook" }} selected {{ end }}>{{ translate "category_audiobook" }}</option> </option>
<option value="audiobook" {{ if eq .Category "audiobook" }} selected {{ end }}>{{ translate
"category_audiobook" }}</option>
<option value="tv" {{ if eq .Category "tv" }} selected {{ end }}>{{ translate "category_tv" }}</option> <option value="tv" {{ if eq .Category "tv" }} selected {{ end }}>{{ translate "category_tv" }}</option>
<option value="games" {{ if eq .Category "games" }} selected {{ end }}>{{ translate "category_games" }}</option> <option value="games" {{ if eq .Category "games" }} selected {{ end }}>{{ translate "category_games" }}
<option value="software" {{ if eq .Category "software" }} selected {{ end }}>{{ translate "category_software" }}</option> </option>
<option value="anime" {{ if eq .Category "anime" }} selected {{ end }}>{{ translate "category_anime" }}</option> <option value="software" {{ if eq .Category "software" }} selected {{ end }}>{{ translate
<option value="music" {{ if eq .Category "music" }} selected {{ end }}>{{ translate "category_music" }}</option> "category_software" }}</option>
<option value="anime" {{ if eq .Category "anime" }} selected {{ end }}>{{ translate "category_anime" }}
</option>
<option value="music" {{ if eq .Category "music" }} selected {{ end }}>{{ translate "category_music" }}
</option>
{{ if eq .Safe "disabled" }} {{ if eq .Safe "disabled" }}
<option value="xxx" {{ if eq .Category "xxx" }} selected {{ end }}>{{ translate "category_xxx" }}</option> <option value="xxx" {{ if eq .Category "xxx" }} selected {{ end }}>{{ translate "category_xxx" }}</option>
{{ end }} {{ end }}
@ -151,6 +177,7 @@
</form> </form>
<p class="fetched fetched_dif_files fetched_tor">{{ translate "fetched_in" .Fetched }}</p> <p class="fetched fetched_dif_files fetched_tor">{{ translate "fetched_in" .Fetched }}</p>
{{ if .Results }}
<div class="clean"> <div class="clean">
{{ range .Results }} {{ range .Results }}
<div class="results" id="results"> <div class="results" id="results">
@ -158,9 +185,12 @@
<div class="error">{{ translate "error" }}: {{ .Error }}</div> <div class="error">{{ translate "error" }}: {{ .Error }}</div>
{{ else }} {{ else }}
<a id="link" href="{{ .URL }}">{{ .URL }}</a> <a id="link" href="{{ .URL }}">{{ .URL }}</a>
<a class="torrent" href="magnet:{{ .Magnet }}"><h3 class="single-line-ellipsis">{{ .Title }}</h3></a> <a class="torrent" href="magnet:{{ .Magnet }}">
<h3 class="single-line-ellipsis">{{ .Title }}</h3>
</a>
<p class="stats">{{ if .Views }}{{ .Views }} {{ translate "views" }} • {{ end }}{{ .Size }}</p> <p class="stats">{{ if .Views }}{{ .Views }} {{ translate "views" }} • {{ end }}{{ .Size }}</p>
<p class="publish__info">{{ translate "seeders" }}: <span class="seeders">{{ .Seeders }}</span> | {{ translate "leechers" }}: <span class="leechers">{{ .Leechers }}</span></p> <p class="publish__info">{{ translate "seeders" }}: <span class="seeders">{{ .Seeders }}</span> | {{
translate "leechers" }}: <span class="leechers">{{ .Leechers }}</span></p>
{{ end }} {{ end }}
</div> </div>
{{ end }} {{ end }}
@ -177,18 +207,23 @@
{{ end }} {{ end }}
</form> </form>
</div> </div>
{{else if .NoResults}} {{ else }}
{{ if eq (len .Results) 0 }}
<div class="no-results-found no-results-found-offset"> <div class="no-results-found no-results-found-offset">
{{ translate "no_results_found" .Query }}<br> {{ translate "no_results_found" .Query }}<br>
{{ translate "suggest_rephrase" }} {{ translate "suggest_rephrase" }}
</div> </div>
{{else}} {{ else }}
<div class="no-results-found no-results-found-offset">{{ translate "no_more_results" }}</div> <div class="no-results-found no-results-found-offset">
{{end}} {{ translate "no_more_results" }}
</div>
{{ end }}
{{ end }}
<script defer src="/static/js/autocomplete.js"></script> <script defer src="/static/js/autocomplete.js"></script>
<script defer src="/static/js/minimenu.js"></script> <script defer src="/static/js/minimenu.js"></script>
<script> <script>
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -12,32 +13,38 @@
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-loadingindicator.css"> <link rel="stylesheet" href="/static/css/style-loadingindicator.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -50,7 +57,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -62,10 +70,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -79,13 +84,22 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" herf="/"> <div class="logo-container" herf="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
<div class="wrapper-results"> <div class="wrapper-results">
<input type="text" name="q" value="{{ .Query }}" id="search-input" /> <input type="text" name="q" value="{{ .Query }}" id="search-input" />
<button id="search-wrapper-ico" class="material-icons-round" name="t" value="forum">&#xe8b6;</button> <!-- Search icon --> <button id="search-wrapper-ico" class="material-icons-round" name="t" value="forum">&#xe8b6;</button>
<!-- Search icon -->
<div class="autocomplete"> <div class="autocomplete">
<ul></ul> <ul></ul>
</div> </div>
@ -93,33 +107,40 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <!-- Search icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button> <!-- Search icon -->
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <!-- Image icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button> <!-- Image icon -->
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <!-- Video icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button> <!-- Video icon -->
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="forum">&#xe0bf;</button> <!-- Forum icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="forum">&#xe0bf;</button> <!-- Forum icon -->
<button name="t" value="forum" class="clickable search-active">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable search-active">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <!-- Map icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button> <!-- Map icon -->
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <!-- Share icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button> <!-- Share icon -->
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -127,8 +148,9 @@
<form class="results_settings" action="/search" method="get"> <form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}"> <input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect"> <select class="results-settings" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>{{ translate "safe_search_off" }}</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>{{ translate "safe_search_off" }}
<option value="active" {{if eq .Safe "active"}}selected{{end}}>{{ translate "safe_search_on" }}</option> </option>
<option value="active" {{if eq .Safe "active" }}selected{{end}}>{{ translate "safe_search_on" }}</option>
</select> </select>
<select class="results-settings" name="lang" id="languageSelect"> <select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -144,7 +166,9 @@
{{range .Results}} {{range .Results}}
<div class="result_item"> <div class="result_item">
<a id="link" class="single-line-ellipsis" href="{{.URL}}">{{.URL}}</a> <a id="link" class="single-line-ellipsis" href="{{.URL}}">{{.URL}}</a>
<a href="{{.URL}}"><h3 class="single-line-ellipsis">{{.Header}}</h3></a> <a href="{{.URL}}">
<h3 class="single-line-ellipsis">{{.Header}}</h3>
</a>
<p class="clamp-3-lines">{{.Description}}</p> <p class="clamp-3-lines">{{.Description}}</p>
</div> </div>
<br> <br>
@ -159,7 +183,8 @@
{{end}} {{end}}
</div> </div>
<div id="message-bottom-right" class="message-bottom-right"> <div id="message-bottom-right" class="message-bottom-right">
<span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span class="dot">.</span><span class="dot">.</span> <span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span
class="dot">.</span><span class="dot">.</span>
</div> </div>
<div class="prev-next prev-img" id="prev-next"> <div class="prev-next prev-img" id="prev-next">
<form action="/search" method="get"> <form action="/search" method="get">
@ -184,4 +209,5 @@
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -15,39 +16,45 @@
} }
</style> </style>
</noscript> </noscript>
<link rel="stylesheet" href="/static/css/style-imageloading.css">
<link rel="stylesheet" href="/static/css/style-imageviewer.css"> <link rel="stylesheet" href="/static/css/style-imageviewer.css">
<link rel="stylesheet" href="/static/css/style-fixedwidth.css"> <link rel="stylesheet" href="/static/css/style-fixedwidth.css">
<link rel="stylesheet" href="/static/css/style-loadingindicator.css"> <link rel="stylesheet" href="/static/css/style-loadingindicator.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -60,7 +67,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -72,10 +80,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -89,12 +94,20 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" herf="/"> <div class="logo-container" herf="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
<div class="wrapper-results"> <div class="wrapper-results">
<input type="text" name="q" value="{{ .Query }}" id="search-input"/> <input type="text" name="q" value="{{ .Query }}" id="search-input" />
<button id="search-wrapper-ico" class="material-icons-round" name="t" value="image">&#xe8b6;</button> <button id="search-wrapper-ico" class="material-icons-round" name="t" value="image">&#xe8b6;</button>
<div class="autocomplete"> <div class="autocomplete">
<ul> <ul>
@ -104,33 +117,40 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button>
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="image">&#xe3f4;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="image">&#xe3f4;</button>
<button name="t" value="image" class="clickable search-active">{{ translate "images" }}</button> <button name="t" value="image" class="clickable search-active">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button>
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button>
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button>
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button>
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -141,12 +161,14 @@
<form class="results_settings" action="/search" method="get"> <form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}"> <input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect"> <select class="results-settings" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>{{ translate "safe_search_off" }}</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>{{ translate "safe_search_off" }}
<option value="active" {{if eq .Safe "active"}}selected{{end}}>{{ translate "safe_search_on" }}</option> </option>
<option value="active" {{if eq .Safe "active" }}selected{{end}}>{{ translate "safe_search_on" }}</option>
</select> </select>
<select class="results-settings" name="lang" id="languageSelect"> <select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
<option value="{{.Code}}" {{if eq .Code $.CurrentLang}}selected{{end}}>{{.Name}}</option> <!-- this is too wide or too less, fix --> <option value="{{.Code}}" {{if eq .Code $.CurrentLang}}selected{{end}}>{{.Name}}</option>
<!-- this is too wide or too less, fix -->
{{end}} {{end}}
</select> </select>
<button class="results-save" name="t" value="image">{{ translate "save_settings" }}</button> <button class="results-save" name="t" value="image">{{ translate "save_settings" }}</button>
@ -163,50 +185,26 @@
{{ if $.HardCacheEnabled }} {{ if $.HardCacheEnabled }}
<noscript> <noscript>
<!-- JavaScript is disabled; serve actual images without placeholders; serve proxy image since HardCache is enabled --> <!-- JavaScript is disabled; serve actual images without placeholders; serve proxy image since HardCache is enabled -->
<img <img src="{{ $result.ProxyFull }}" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="{{ $result.ProxyFull }}" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}"
data-id="{{ $result.ID }}" alt="{{ $result.Title }}" class="clickable" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable"
/>
</noscript> </noscript>
<!-- JavaScript is enabled; use placeholders; serve proxy image since HardCache is enabled --> <!-- JavaScript is enabled; use placeholders; serve proxy image since HardCache is enabled -->
<img <img src="/static/images/placeholder.svg" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="/static/images/placeholder.svg" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}"
data-id="{{ $result.ID }}" alt="{{ $result.Title }}" class="clickable placeholder-img" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable placeholder-img"
/>
{{ else }} {{ else }}
<!-- JavaScript is enabled; use placeholders; serve full image since HardCache is disabled --> <!-- JavaScript is enabled; use placeholders; serve full image since HardCache is disabled -->
<img <img src="/static/images/placeholder.svg" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="/static/images/placeholder.svg" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}"
data-id="{{ $result.ID }}" alt="{{ $result.Title }}" class="clickable placeholder-img" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable placeholder-img"
/>
<noscript> <noscript>
<!-- JavaScript is disabled; serve actual images without placeholders; serve full image since HardCache is disabled --> <!-- JavaScript is disabled; serve actual images without placeholders; serve full image since HardCache is disabled -->
<img <img src="{{ $result.ProxyFull }}" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="{{ $result.ProxyFull }}" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}"
data-id="{{ $result.ID }}" alt="{{ $result.Title }}" class="clickable" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable"
/>
</noscript> </noscript>
{{ end }} {{ end }}
<div class="resolution">{{ $result.Width }} × {{ $result.Height }}</div> <div class="resolution">{{ $result.Width }} × {{ $result.Height }}</div>
@ -242,12 +240,14 @@
{{ end }} {{ end }}
</div> </div>
<div id="message-bottom-right" class="message-bottom-right"> <div id="message-bottom-right" class="message-bottom-right">
<span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span class="dot">.</span><span class="dot">.</span> <span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span
class="dot">.</span><span class="dot">.</span>
</div> </div>
<div id="image-viewer-overlay" style="display: none;"></div> <div id="image-viewer-overlay" style="display: none;"></div>
<div id="template-data" data-page="{{ .Page }}" data-query="{{ .Query }}" data-type="image" data-hard-cache-enabled="{{ .HardCacheEnabled }}"></div> <div id="template-data" data-page="{{ .Page }}" data-query="{{ .Query }}" data-type="image"
data-hard-cache-enabled="{{ .HardCacheEnabled }}"></div>
<script defer src="/static/js/autocomplete.js"></script> <script defer src="/static/js/autocomplete.js"></script>
<script defer src="/static/js/imagetitletrim.js"></script> <script defer src="/static/js/imagetitletrim.js"></script>
<script defer src="/static/js/imageviewer.js"></script> <script defer src="/static/js/imageviewer.js"></script>
@ -257,4 +257,5 @@
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
</script> </script>
</body> </body>
</html> </html>

View file

@ -3,50 +3,26 @@
{{ if $.HardCacheEnabled }} {{ if $.HardCacheEnabled }}
<noscript> <noscript>
<!-- JavaScript is disabled; serve actual images without placeholders; serve proxy image since HardCache is enabled --> <!-- JavaScript is disabled; serve actual images without placeholders; serve proxy image since HardCache is enabled -->
<img <img src="{{ $result.ProxyFull }}" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="{{ $result.ProxyFull }}" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}" alt="{{ $result.Title }}"
data-id="{{ $result.ID }}" class="clickable" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable"
/>
</noscript> </noscript>
<!-- JavaScript is enabled; use placeholders; serve proxy image since HardCache is enabled --> <!-- JavaScript is enabled; use placeholders; serve proxy image since HardCache is enabled -->
<img <img src="/static/images/placeholder.svg" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="/static/images/placeholder.svg" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}" alt="{{ $result.Title }}"
data-id="{{ $result.ID }}" class="clickable placeholder-img" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable placeholder-img"
/>
{{ else }} {{ else }}
<!-- JavaScript is enabled; use placeholders; serve full image since HardCache is disabled --> <!-- JavaScript is enabled; use placeholders; serve full image since HardCache is disabled -->
<img <img src="/static/images/placeholder.svg" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="/static/images/placeholder.svg" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}" alt="{{ $result.Title }}"
data-id="{{ $result.ID }}" class="clickable placeholder-img" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable placeholder-img"
/>
<noscript> <noscript>
<!-- JavaScript is disabled; serve actual images without placeholders; serve full image since HardCache is disabled --> <!-- JavaScript is disabled; serve actual images without placeholders; serve full image since HardCache is disabled -->
<img <img src="{{ $result.ProxyFull }}" data-id="{{ $result.ID }}" data-full="{{ $result.ProxyFull }}"
src="{{ $result.ProxyFull }}" data-proxy-full="{{ $result.ProxyThumb }}" data-source="{{ $result.Source }}" alt="{{ $result.Title }}"
data-id="{{ $result.ID }}" class="clickable" />
data-full="{{ $result.ProxyFull }}"
data-proxy-full="{{ $result.ProxyThumb }}"
data-source="{{ $result.Source }}"
alt="{{ $result.Title }}"
class="clickable"
/>
</noscript> </noscript>
{{ end }} {{ end }}
<div class="resolution">{{ $result.Width }} × {{ $result.Height }}</div> <div class="resolution">{{ $result.Width }} × {{ $result.Height }}</div>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -11,7 +12,8 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script> <script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css" />
<!-- Icons --> <!-- Icons -->
@ -19,12 +21,14 @@
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
<style> <style>
body, html { body,
html {
height: 100%; height: 100%;
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; overflow: hidden;
} }
#map { #map {
height: calc(100% - 100px); height: calc(100% - 100px);
width: 100%; width: 100%;
@ -32,26 +36,31 @@
} }
</style> </style>
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -64,7 +73,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -76,10 +86,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -93,13 +100,22 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" herf="/"> <div class="logo-container" herf="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
<div class="wrapper-results"> <div class="wrapper-results">
<input type="text" name="q" value="{{ .Query }}" id="search-input" /> <input type="text" name="q" value="{{ .Query }}" id="search-input" />
<button id="search-wrapper-ico" class="material-icons-round" name="t" value="map">&#xe8b6;</button> <!-- Search icon --> <button id="search-wrapper-ico" class="material-icons-round" name="t" value="map">&#xe8b6;</button>
<!-- Search icon -->
<div class="autocomplete"> <div class="autocomplete">
<ul></ul> <ul></ul>
</div> </div>
@ -107,31 +123,38 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <!-- Search icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button> <!-- Search icon -->
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <!-- Image icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button> <!-- Image icon -->
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <!-- Movie icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button> <!-- Movie icon -->
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <!-- Forum icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button> <!-- Forum icon -->
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="map">&#xe55b;</button> <!-- Map icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="map">&#xe55b;</button> <!-- Map icon -->
<button name="t" value="map" class="clickable search-active">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable search-active">{{ translate "maps" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <!-- Share icon --> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button> <!-- Share icon -->
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -189,17 +212,17 @@
// Add custom control for geolocation // Add custom control for geolocation
L.Control.geolocate = L.Control.extend({ L.Control.geolocate = L.Control.extend({
onAdd: function(map) { onAdd: function (map) {
var div = L.DomUtil.create('div', 'leaflet-control-locate'); var div = L.DomUtil.create('div', 'leaflet-control-locate');
div.title = '{{ translate "locate_me" }}'; div.title = '{{ translate "locate_me" }}';
L.DomEvent.on(div, 'click', function() { L.DomEvent.on(div, 'click', function () {
map.locate({setView: true, maxZoom: 16}); map.locate({ setView: true, maxZoom: 16 });
}); });
return div; return div;
} }
}); });
L.control.geolocate = function(opts) { L.control.geolocate = function (opts) {
return new L.Control.geolocate(opts); return new L.Control.geolocate(opts);
} }
@ -227,4 +250,5 @@
</script> </script>
{{ end }} {{ end }}
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -13,32 +14,38 @@
<link rel="stylesheet" href="/static/css/style-music.css"> <link rel="stylesheet" href="/static/css/style-music.css">
<link rel="stylesheet" href="/static/css/style-loadingindicator.css"> <link rel="stylesheet" href="/static/css/style-loadingindicator.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -51,7 +58,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -63,10 +71,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -80,7 +85,15 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" href="/"> <div class="logo-container" href="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
@ -94,33 +107,40 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button>
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button>
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button>
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable search-active">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable search-active">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button>
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button>
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button>
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -140,7 +160,9 @@
</a> </a>
</div> </div>
<div class="music-info"> <div class="music-info">
<a href="{{.URL}}"><h3 class="video_title single-line-ellipsis">{{.Title}}</h3></a> <a href="{{.URL}}">
<h3 class="video_title single-line-ellipsis">{{.Title}}</h3>
</a>
<div class="stats"> <div class="stats">
<span class="artist">{{.Artist}}</span> <span class="artist">{{.Artist}}</span>
<span class="pipe">|</span> <span class="pipe">|</span>
@ -149,17 +171,21 @@
</div> </div>
</div> </div>
{{end}} {{end}}
{{else if .NoResults}} {{if not .HasNextPage}}
<div class="no-results-found no-results-found-offset">
{{ translate "no_more_results" }}
</div>
{{end}}
{{else}}
<div class="no-results-found"> <div class="no-results-found">
{{ translate "no_results_found" .Query }}<br> {{ translate "no_results_found" .Query }}<br>
{{ translate "suggest_rephrase" }} {{ translate "suggest_rephrase" }}
</div> </div>
{{else}}
<div class="no-results-found">{{ translate "no_more_results" }}</div>
{{end}} {{end}}
</div> </div>
<div id="message-bottom-right" class="message-bottom-right"> <div id="message-bottom-right" class="message-bottom-right">
<span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span class="dot">.</span><span class="dot">.</span> <span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span
class="dot">.</span><span class="dot">.</span>
</div> </div>
<div class="prev-next prev-img" id="prev-next"> <div class="prev-next prev-img" id="prev-next">
<form action="/music" method="get"> <form action="/music" method="get">
@ -183,10 +209,11 @@
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
// Handle music service selection // Handle music service selection
document.getElementById('musicServiceSelect').addEventListener('change', function() { document.getElementById('musicServiceSelect').addEventListener('change', function () {
const form = this.closest('form'); const form = this.closest('form');
form.submit(); form.submit();
}); });
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -17,26 +18,31 @@
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="js-enabled"> <div id="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -59,10 +65,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -81,17 +84,23 @@
<section class="privacy-section"> <section class="privacy-section">
<h2>Introduction</h2> <h2>Introduction</h2>
<p>This website is a Free and Open Source Software (FOSS) project licensed under the <a href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank" rel="noopener noreferrer">AGPL-3.0</a> license. The project is committed to providing a private and secure experience for all users.</p> <p>This website is a Free and Open Source Software (FOSS) project licensed under the <a
href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank"
rel="noopener noreferrer">AGPL-3.0</a> license. The project is committed to providing a private and
secure experience for all users.</p>
</section> </section>
<section class="privacy-section"> <section class="privacy-section">
<h2>Data Collection</h2> <h2>Data Collection</h2>
<p>Our servers <b>do not collect any user data</b>, including IP addresses, browsing history, or any other identifiable information. We respect your privacy and ensure that no user information is logged or stored on our servers.</p> <p>Our servers <b>do not collect any user data</b>, including IP addresses, browsing history, or any other
identifiable information. We respect your privacy and ensure that no user information is logged or
stored on our servers.</p>
</section> </section>
<section class="privacy-section"> <section class="privacy-section">
<h2>Cookies Used</h2> <h2>Cookies Used</h2>
<p>Our cookies are <b>not used to track users</b> or sell user data, they are just used to save your settings.</p> <p>Our cookies are <b>not used to track users</b> or sell user data, they are just used to save your
settings.</p>
<p>These following cookies are used by this site:</p> <p>These following cookies are used by this site:</p>
<table class="cookie-table"> <table class="cookie-table">
<thead> <thead>
@ -130,4 +139,5 @@
document.getElementById('js-disabled').style.display = 'none'; document.getElementById('js-disabled').style.display = 'none';
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -10,12 +11,51 @@
<!-- Inline Style to Avoid Flashbang --> <!-- Inline Style to Avoid Flashbang -->
<style> <style>
body { body {
background-color: {{ if .IsThemeDark }} #121212 {{ else }} #ffffff {{ end }}; background-color: {
color: {{ if .IsThemeDark }} #ffffff {{ else }} #000000 {{ end }}; {
if .IsThemeDark
} }
}
#121212 {
{
else
}
}
#ffffff {
{
end
}
}
;
color: {
{
if .IsThemeDark
}
}
#ffffff {
{
else
}
}
#000000 {
{
end
}
}
;
}
#js-enabled { #js-enabled {
display: none; display: none;
} }
#js-disabled { #js-disabled {
display: block; display: block;
} }
@ -25,33 +65,39 @@
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="js-enabled"> <div id="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -74,10 +120,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -91,10 +134,18 @@
<form action="/search" class="search-container" method="get" autocomplete="off"> <form action="/search" class="search-container" method="get" autocomplete="off">
<div class="search-page-content"> <div class="search-page-content">
<div class="logo-container"> <div class="logo-container">
<svg xmlns="http://www.w3.org/2000/svg" width="600" height="200" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="600" height="200" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</div> </div>
<div class="wrapper custom-search-page"> <div class="wrapper custom-search-page">
<input type="text" name="q" autofocus id="search-input"/> <input type="text" name="q" autofocus id="search-input" />
<button id="search-wrapper-ico" class="material-icons-round" type="submit">&#xe8b6;</button> <button id="search-wrapper-ico" class="material-icons-round" type="submit">&#xe8b6;</button>
<div class="autocomplete"> <div class="autocomplete">
<ul></ul> <ul></ul>
@ -102,35 +153,40 @@
</div> </div>
<div class="search-type-icons"> <div class="search-type-icons">
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-text" class="material-icons-round clickable" name="t" value="text"> <button id="sub-search-wrapper-ico-text" class="material-icons-round clickable" name="t"
value="text">
<span class="material-icons-round">&#xe8b6;</span> <!-- 'search' icon --> <span class="material-icons-round">&#xe8b6;</span> <!-- 'search' icon -->
<p>{{ translate "web" }}</p> <p>{{ translate "web" }}</p>
</button> </button>
</div> </div>
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-image" class="material-icons-round clickable" name="t" value="image"> <button id="sub-search-wrapper-ico-image" class="material-icons-round clickable" name="t"
value="image">
<span class="material-icons-round">&#xe3f4;</span> <!-- 'image' icon --> <span class="material-icons-round">&#xe3f4;</span> <!-- 'image' icon -->
<p>{{ translate "images" }}</p> <p>{{ translate "images" }}</p>
</button> </button>
</div> </div>
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-video" class="material-icons-round clickable" name="t" value="video"> <button id="sub-search-wrapper-ico-video" class="material-icons-round clickable" name="t"
value="video">
<span class="material-icons-round">&#xe02c;</span> <!-- 'movie' icon --> <span class="material-icons-round">&#xe02c;</span> <!-- 'movie' icon -->
<p>{{ translate "videos" }}</p> <p>{{ translate "videos" }}</p>
</button> </button>
</div> </div>
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-video" class="material-icons-round clickable" name="t" value="music"> <button id="sub-search-wrapper-ico-video" class="material-icons-round clickable" name="t"
value="music">
<span class="material-icons-round">&#xe423;</span> <!-- 'note' icon --> <span class="material-icons-round">&#xe423;</span> <!-- 'note' icon -->
<p>{{ translate "category_music" }}</p> <p>{{ translate "category_music" }}</p>
</button> </button>
</div> </div>
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-forum" class="material-icons-round clickable" name="t" value="forum"> <button id="sub-search-wrapper-ico-forum" class="material-icons-round clickable" name="t"
value="forum">
<span class="material-icons-round">&#xe0bf;</span> <!-- 'forum' icon --> <span class="material-icons-round">&#xe0bf;</span> <!-- 'forum' icon -->
<p>{{ translate "forums" }}</p> <p>{{ translate "forums" }}</p>
</button> </button>
@ -144,7 +200,8 @@
</div> </div>
<div class="icon-button"> <div class="icon-button">
<button id="sub-search-wrapper-ico-file" class="material-icons-round clickable" name="t" value="file"> <button id="sub-search-wrapper-ico-file" class="material-icons-round clickable" name="t"
value="file">
<span class="material-icons-round">&#xe80d;</span> <!-- 'share' icon --> <span class="material-icons-round">&#xe80d;</span> <!-- 'share' icon -->
<p>{{ translate "torrents" }}</p> <p>{{ translate "torrents" }}</p>
</button> </button>
@ -164,4 +221,5 @@
document.getElementById('js-disabled').style.display = 'none'; document.getElementById('js-disabled').style.display = 'none';
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{.CurrentSiteLang}}"> <html lang="{{.CurrentSiteLang}}">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -11,12 +12,14 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-settings.css"> <link rel="stylesheet" href="/static/css/style-settings.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<div class="settings-nav"> <div class="settings-nav">
<h1 class="logomobile"><a class="no-decoration" href="./">{{ translate "settings" }}</a></h1> <h1 class="logomobile"><a class="no-decoration" href="./">{{ translate "settings" }}</a></h1>
@ -26,44 +29,46 @@
<form action="/save-settings" method="post"> <form action="/save-settings" method="post">
<div class="settings"> <div class="settings">
<div class="settings-row"> <div class="settings-row">
<span class="highlight"><p>{{ translate "theme" }}</p></span> <span class="highlight">
<p>{{ translate "theme" }}</p>
</span>
</div> </div>
<div class="theme-settings"> <div class="theme-settings">
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<a href="/search?theme=dark" class="theme-link"> <a href="/search?theme=dark" class="theme-link">
<div class="view-image-search clickable" id="dark"> <div class="view-image-search clickable" id="dark">
<img src="/static/images/dark.webp" alt="{{ translate "theme_dark" }}"> <img src="/static/images/dark.webp" alt="{{ translate " theme_dark" }}">
<div class="theme-tooltip">🌆 {{ translate "theme_dark" }}</div> <div class="theme-tooltip">🌆 {{ translate "theme_dark" }}</div>
</div> </div>
</a> </a>
<a href="/search?theme=light" class="theme-link"> <a href="/search?theme=light" class="theme-link">
<div class="view-image-search clickable" id="light"> <div class="view-image-search clickable" id="light">
<img src="/static/images/light.webp" alt="{{ translate "theme_light" }}"> <img src="/static/images/light.webp" alt="{{ translate " theme_light" }}">
<div class="theme-tooltip">🌇 {{ translate "theme_light" }}</div> <div class="theme-tooltip">🌇 {{ translate "theme_light" }}</div>
</div> </div>
</a> </a>
<a href="/search?theme=night" class="theme-link"> <a href="/search?theme=night" class="theme-link">
<div class="view-image-search clickable" id="night"> <div class="view-image-search clickable" id="night">
<img src="/static/images/night.webp" alt="{{ translate "theme_night" }}"> <img src="/static/images/night.webp" alt="{{ translate " theme_night" }}">
<div class="theme-tooltip">🌃 {{ translate "theme_night" }}</div> <div class="theme-tooltip">🌃 {{ translate "theme_night" }}</div>
</div> </div>
</a> </a>
<a href="/search?theme=black" class="theme-link"> <a href="/search?theme=black" class="theme-link">
<div class="view-image-search clickable" id="black"> <div class="view-image-search clickable" id="black">
<img src="/static/images/black.webp" alt="🕶️ {{ translate "theme_black" }}"> <img src="/static/images/black.webp" alt="🕶️ {{ translate " theme_black" }}">
<div class="theme-tooltip">🐈‍⬛ {{ translate "theme_black" }}</div> <div class="theme-tooltip">🐈‍⬛ {{ translate "theme_black" }}</div>
</div> </div>
</a> </a>
<a href="/search?theme=mocha" class="theme-link"> <a href="/search?theme=mocha" class="theme-link">
<div class="view-image-search clickable" id="mocha"> <div class="view-image-search clickable" id="mocha">
<img src="/static/images/mocha.webp" alt="🌿 {{ translate "theme_mocha" }}"> <img src="/static/images/mocha.webp" alt="🌿 {{ translate " theme_mocha" }}">
<div class="theme-tooltip">🌿 {{ translate "theme_mocha" }}</div> <div class="theme-tooltip">🌿 {{ translate "theme_mocha" }}</div>
</div> </div>
</a> </a>
<a href="/search?theme=latte" class="theme-link"> <a href="/search?theme=latte" class="theme-link">
<div class="view-image-search clickable" id="latte"> <div class="view-image-search clickable" id="latte">
<img src="/static/images/latte.webp" alt="🌻 {{ translate "theme_latte" }}"> <img src="/static/images/latte.webp" alt="🌻 {{ translate " theme_latte" }}">
<div class="theme-tooltip">🌻 {{ translate "theme_latte" }}</div> <div class="theme-tooltip">🌻 {{ translate "theme_latte" }}</div>
</div> </div>
</a> </a>
@ -73,8 +78,9 @@
<div class="settings-row"> <div class="settings-row">
<p>{{ translate "safe_search" }}</p> <p>{{ translate "safe_search" }}</p>
<select class="results-settings" name="safe" id="safeSearchSelect"> <select class="results-settings" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>{{ translate "off" }}</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>{{ translate "off" }}
<option value="active" {{if eq .Safe "active"}}selected{{end}}>{{ translate "on" }}</option> </option>
<option value="active" {{if eq .Safe "active" }}selected{{end}}>{{ translate "on" }}</option>
</select> </select>
</div> </div>
@ -104,4 +110,5 @@
</form> </form>
</div> </div>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -12,32 +13,38 @@
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-loadingcircle.css"> <link rel="stylesheet" href="/static/css/style-loadingcircle.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -50,7 +57,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -62,10 +70,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -79,7 +84,15 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" href="/"> <div class="logo-container" href="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
@ -94,33 +107,40 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="text">&#xe8b6;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="text">&#xe8b6;</button>
<button name="t" value="text" class="clickable search-active">{{ translate "web" }}</button> <button name="t" value="text" class="clickable search-active">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button>
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="video">&#xe02c;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="video">&#xe02c;</button>
<button name="t" value="video" class="clickable">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button>
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button>
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button>
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -128,8 +148,9 @@
<form class="results_settings" action="/search" method="get"> <form class="results_settings" action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}"> <input type="hidden" name="q" value="{{ .Query }}">
<select class="results-settings" name="safe" id="safeSearchSelect"> <select class="results-settings" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>{{ translate "safe_search_off" }}</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>{{ translate "safe_search_off" }}
<option value="active" {{if eq .Safe "active"}}selected{{end}}>{{ translate "safe_search_on" }}</option> </option>
<option value="active" {{if eq .Safe "active" }}selected{{end}}>{{ translate "safe_search_on" }}</option>
</select> </select>
<select class="results-settings" name="lang" id="languageSelect"> <select class="results-settings" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -146,13 +167,8 @@
<div class="result_item"> <div class="result_item">
<div class="result_header"> <div class="result_header">
<div class="favicon-container"> <div class="favicon-container">
<img <img src="/static/images/placeholder.svg" data-id="{{ .FaviconID }}"
src="/static/images/placeholder.svg" data-full="/image/{{ .FaviconID }}_icon.webp" alt="🌐" class="favicon placeholder-img" />
data-id="{{ .FaviconID }}"
data-full="/image/{{ .FaviconID }}_icon.webp"
alt="🌐"
class="favicon placeholder-img"
/>
</div> </div>
<div class="result-url single-line-ellipsis"> <div class="result-url single-line-ellipsis">
{{ .PrettyLink.Domain }} {{ .PrettyLink.Domain }}
@ -161,7 +177,9 @@
{{ end }} {{ end }}
</div> </div>
</div> </div>
<a href="{{ .URL }}" class="result-title"><h3 class="single-line-ellipsis">{{ .Header }}</h3></a> <a href="{{ .URL }}" class="result-title">
<h3 class="single-line-ellipsis">{{ .Header }}</h3>
</a>
<p class="result-description clamp-3-lines">{{ .Description }}</p> <p class="result-description clamp-3-lines">{{ .Description }}</p>
</div> </div>
{{ end }} {{ end }}
@ -177,7 +195,8 @@
{{ end }} {{ end }}
</div> </div>
<div id="message-bottom-right" class="message-bottom-right"> <div id="message-bottom-right" class="message-bottom-right">
<span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span class="dot">.</span><span class="dot">.</span> <span id="loading-text">{{ translate "searching_for_new_results" }}</span><span class="dot">.</span><span
class="dot">.</span><span class="dot">.</span>
</div> </div>
<div class="prev-next prev-img" id="prev-next"> <div class="prev-next prev-img" id="prev-next">
<form action="/search" method="get"> <form action="/search" method="get">
@ -193,7 +212,8 @@
</noscript> </noscript>
</form> </form>
</div> </div>
<div id="template-data" data-page="{{ .Page }}" data-query="{{ .Query }}" data-type="text" data-hard-cache-enabled="{{ .HardCacheEnabled }}"></div> <div id="template-data" data-page="{{ .Page }}" data-query="{{ .Query }}" data-type="text"
data-hard-cache-enabled="{{ .HardCacheEnabled }}"></div>
<script defer src="/static/js/dynamicscrollingtext.js"></script> <script defer src="/static/js/dynamicscrollingtext.js"></script>
<script defer src="/static/js/autocomplete.js"></script> <script defer src="/static/js/autocomplete.js"></script>
<script defer src="/static/js/minimenu.js"></script> <script defer src="/static/js/minimenu.js"></script>
@ -201,4 +221,5 @@
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
</script> </script>
</body> </body>
</html> </html>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -11,32 +12,38 @@
<link rel="stylesheet" href="/static/css/{{.Theme}}.css"> <link rel="stylesheet" href="/static/css/{{.Theme}}.css">
<link rel="stylesheet" href="/static/css/style-fonts.css"> <link rel="stylesheet" href="/static/css/style-fonts.css">
<link rel="stylesheet" href="/static/css/style-menu.css"> <link rel="stylesheet" href="/static/css/style-menu.css">
<link rel="search" type="application/opensearchdescription+xml" title="{{ translate "site_name" }}" href="/opensearch.xml"> <link rel="search" type="application/opensearchdescription+xml" title="{{ translate " site_name" }}"
href="/opensearch.xml">
<!-- Icons --> <!-- Icons -->
<link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml"> <link rel="icon" href="{{ .IconPathSVG }}" type="image/svg+xml">
<link rel="icon" href="{{ .IconPathPNG }}" type="image/png"> <link rel="icon" href="{{ .IconPathPNG }}" type="image/png">
<link rel="apple-touch-icon" href="{{ .IconPathPNG }}"> <link rel="apple-touch-icon" href="{{ .IconPathPNG }}">
</head> </head>
<body> <body>
<!-- Menu Button --> <!-- Menu Button -->
<div id="content" class="js-enabled"> <div id="content" class="js-enabled">
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<button class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button> <button
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</button>
</div> </div>
<div class="search-menu settings-menu-hidden"> <div class="search-menu settings-menu-hidden">
<h2>{{ translate "settings" }}</h2> <h2>{{ translate "settings" }}</h2>
<div class="settings-content"> <div class="settings-content">
<button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings" }}</button> <button id="settingsButton" onclick="window.location.href='/settings'">{{ translate "all_settings"
}}</button>
<div class="theme-settings"> <div class="theme-settings">
<p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p> <p><span class="highlight">Current theme: </span> <span id="theme_name">{{.Theme}}</span></p>
<div class="themes-settings-menu"> <div class="themes-settings-menu">
<div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme" src="/static/images/dark.webp"></div> <div><img class="view-image-search clickable" id="dark_theme" alt="Dark Theme"
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme" src="/static/images/light.webp"></div> src="/static/images/dark.webp"></div>
<div><img class="view-image-search clickable" id="light_theme" alt="Light Theme"
src="/static/images/light.webp"></div>
</div> </div>
</div> </div>
<select class="lang" name="safe" id="safeSearchSelect"> <select class="lang" name="safe" id="safeSearchSelect">
<option value="disabled" {{if eq .Safe "disabled"}}selected{{end}}>Safe Search Off</option> <option value="disabled" {{if eq .Safe "disabled" }}selected{{end}}>Safe Search Off</option>
<option value="active" {{if eq .Safe "active"}}selected{{end}}>Safe Search On</option> <option value="active" {{if eq .Safe "active" }}selected{{end}}>Safe Search On</option>
</select> </select>
<select class="lang" name="lang" id="languageSelect"> <select class="lang" name="lang" id="languageSelect">
{{range .LanguageOptions}} {{range .LanguageOptions}}
@ -49,7 +56,8 @@
</div> </div>
<noscript> <noscript>
<div class="settings-search-div settings-search-div-search"> <div class="settings-search-div settings-search-div-search">
<a href="/settings" class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a> <a href="/settings"
class="material-icons-round clickable settings-icon-link settings-icon-link-search">&#xe5d2;</a>
</div> </div>
</noscript> </noscript>
@ -61,10 +69,7 @@
</button> </button>
<div class="modal-content"> <div class="modal-content">
<img <img src="/static/images/icon.svg" alt="QGato">
src="/static/images/icon.svg"
alt="QGato"
>
<h2>{{ translate "site_name" }}</h2> <h2>{{ translate "site_name" }}</h2>
<p>{{ translate "site_description" }}</p> <p>{{ translate "site_description" }}</p>
<div class="button-container"> <div class="button-container">
@ -78,7 +83,15 @@
<h1 class="logomobile"> <h1 class="logomobile">
<div class="logo-container" herf="/"> <div class="logo-container" herf="/">
<a href="/"> <a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86"><path fill-rule="evenodd" d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1" style="fill:currentColor" transform="translate(-31.68 4.9)"/><path d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z" aria-label="SEARCH ENGINE" style="font-family:'ADLaM Display';white-space:pre;fill:currentColor"/></svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="86" viewBox="0 0 29 86">
<path fill-rule="evenodd"
d="M-44.35.78C-70.8 6.76-74.8 43.17-50.67 55.73c1.7.88 4.42 1.7 7.83 2.22 4.48.68 9.6.86 9.58.15-.04-1.43-7.3-8.28-8.67-8.28-3.15 0-9.94-5.66-11.97-10C-61.95 22.66-48.1 4.54-31.12 10c13.5 4.34 18.1 22.7 8.66 34.44-1.85 2.3-1.75 2.3-4.4-.22-4.8-4.59-8.57-5.25-11.98-2.1-2.18 2-2.15 2.66.15 4.14 1.9 1.22 13.4 12.95 17.49 17.83 4.3 5.13 5.24 6.14 7.52 7.97C-9.25 75.6-1.23 77.91 1 76.28c.67-.5 1.86-7.8 1.35-8.3-.12-.12-1.34-.4-2.7-.61-5.36-.86-9.23-3.46-14.2-9.55-3.49-4.27-4.12-5.26-3.38-5.26 2.54 0 8.05-8.62 9.86-15.43C-2.36 15.63-22.18-4.23-44.35.78m65.13 1.53C4.92 6.02-4.86 22.36-.72 38.24 3 52.62 18.43 59.63 33.67 57.64c4.7-.62 2.43-.66 4.45-.8s6.45-.01 6.93-.2c.4.03.72-.45.72-.94V42.31c0-7.36-.16-13.62-.33-13.9-.26-.4-2.36-.49-10.19-.4-11.44.15-10.96-.03-10.96 4.09 0 2.44-.04 3.99 1.17 4.7 1.13.68 3.43.59 6.68.41l3.76-.2.27 5.68c.33 6.59.57 6.15-3.64 6.7-15.53 2.04-24-5.02-23.37-19.43.66-15.1 12.2-22.78 26.96-17.94 4.5 1.47 4.4 1.52 6.16-2.8 1.5-3.68 1.5-3.69-.82-4.69C36.03 2.2 25.9 1.11 20.78 2.31m78.83.8c-2.87.76-2.9.84-3.15 6.12-.25 5.56.12 4.96-3.35 5.29-3.43.32-3.32.15-2.76 4.2.61 4.37.6 4.34 3.76 4.34h2.65v12.7c0 14.5 1.55 16.33 3.5 18.3 3.6 3.48 9.59 4.92 14.93 3.06 2.45-.85 2.43-.8 2.18-4.95-.25-4.1-.43-3.5-3.16-2.91-7.73 1.64-8.27.6-8.27-15.05V22.87h5.66l5.34-.1c.67-.01.97.4 1.28-3.9.35-4.8-.2-4.01-.8-4.14l-5.82.18-5.66.26v-5.16c0-5.84-.2-6.48-2.25-7.04-1.75-.49-1.76-.49-4.08.13m-34.5 11.02c-2.64.38-4.71 1.04-8.54 2.72l-4.03 1.76c-1.09.39-.28 1.29.69 3.89 1.06 2.75 1.35 3.35 2.11 3.03.76-.32.7-.23 1.43-.65 9.08-5.25 20.26-2.63 20.26 4.74v2.14l-5.95.2c-13.84.48-20.29 4.75-20.38 13.51-.13 12.4 14.18 17.22 24.62 8.3l2.3-1.97.23 1.85c.32 2.53.6 3.06 2.04 3.67 1.42.6 7.16.62 7.75.03.77-.77.37-6-.25-6.34-.94-.5-.77-1.57-.88-12.63-.15-14.87-.5-16.5-4.4-20.13-3.03-2.84-11.55-4.9-17-4.12m72.86 0c-27.2 5.27-24.13 43.96 3.47 43.9 14.67-.04 24.4-12.77 21.53-28.16-1.86-9.95-14.33-17.8-25-15.73m8.29 8.96c6.88 2.34 9.61 11.51 5.9 19.79-4.13 9.19-17.89 9.17-22.14-.03-1.32-2.85-1.24-10.79.14-13.54 3-6 9.45-8.49 16.1-6.22m-68.84 18.5v3.09l-1.85 1.63c-7.46 6.58-16.36 5.49-15.6-1.9.45-4.35 3.62-5.77 13.06-5.87l4.4-.05v3.1"
style="fill:currentColor" transform="translate(-31.68 4.9)" />
<path
d="M-13.47 73.3v1.11q-.65-.3-1.23-.46-.57-.15-1.11-.15-.93 0-1.44.36-.5.36-.5 1.03 0 .56.33.85.34.28 1.28.46l.69.14q1.27.24 1.88.86.6.6.6 1.64 0 1.22-.82 1.86-.82.63-2.4.63-.6 0-1.28-.14-.68-.13-1.4-.4v-1.17q.7.39 1.36.58.67.2 1.31.2.98 0 1.51-.38.54-.39.54-1.1 0-.62-.39-.97-.38-.35-1.25-.53l-.7-.13q-1.27-.26-1.84-.8-.57-.54-.57-1.51 0-1.12.78-1.76.8-.65 2.18-.65.6 0 1.2.1.63.12 1.27.33zm2.29-.28h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44zm10.14 1.13-1.55 4.2H.5zm-.65-1.13h1.3l3.21 8.45H1.64L.87 79.3h-3.8l-.78 2.17h-1.2zm9.75 4.48q.37.13.71.54.35.4.7 1.12l1.16 2.3H9.41L8.33 79.3q-.42-.85-.82-1.13-.39-.27-1.07-.27H5.2v3.57H4.06v-8.45h2.58q1.44 0 2.16.6.7.61.7 1.84 0 .8-.36 1.32-.37.52-1.08.73zM5.2 73.97v3h1.44q.82 0 1.24-.38.42-.38.42-1.12 0-.75-.42-1.12-.42-.38-1.24-.38zm12.65-.3v1.2q-.58-.53-1.23-.8-.65-.26-1.39-.26-1.45 0-2.22.89-.77.88-.77 2.55t.77 2.56q.77.88 2.22.88.74 0 1.39-.26.65-.27 1.23-.8v1.19q-.6.4-1.27.6-.67.21-1.42.21-1.91 0-3.02-1.17-1.1-1.18-1.1-3.2 0-2.04 1.1-3.21 1.1-1.18 3.02-1.18.76 0 1.43.2.67.2 1.26.6zm1.76-.65h1.14v3.46h4.15v-3.46h1.15v8.45H24.9v-4.02h-4.15v4.02h-1.14zm12.39 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97H32zm7.32 0h1.53l3.75 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm14.42 7.24V78h-1.87v-.93h3v3.62q-.67.47-1.46.71-.8.24-1.7.24-1.98 0-3.1-1.15-1.12-1.16-1.12-3.23 0-2.07 1.12-3.22 1.12-1.16 3.1-1.16.82 0 1.56.2.75.2 1.38.6v1.22q-.64-.54-1.35-.8-.71-.28-1.5-.28-1.55 0-2.33.86-.77.87-.77 2.58t.77 2.58q.78.86 2.33.86.6 0 1.08-.1.48-.1.86-.33zm3.21-7.24h1.14v8.45h-1.14zm3.42 0h1.54l3.74 7.07v-7.07h1.1v8.45h-1.53l-3.74-7.07v7.07h-1.11zm8.66 0h5.34V74h-4.2v2.5h4.02v.96h-4.02v3.05h4.3v.97h-5.44z"
aria-label="SEARCH ENGINE"
style="font-family:'ADLaM Display';white-space:pre;fill:currentColor" />
</svg>
</a> </a>
</div> </div>
</h1> </h1>
@ -92,33 +105,40 @@
</div> </div>
<div class="sub-search-button-wrapper"> <div class="sub-search-button-wrapper">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="text">&#xe8b6;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="text">&#xe8b6;</button>
<button name="t" value="text" class="clickable">{{ translate "web" }}</button> <button name="t" value="text" class="clickable">{{ translate "web" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="image">&#xe3f4;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="image">&#xe3f4;</button>
<button name="t" value="image" class="clickable">{{ translate "images" }}</button> <button name="t" value="image" class="clickable">{{ translate "images" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t" value="video">&#xe02c;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable search-active" name="t"
value="video">&#xe02c;</button>
<button name="t" value="video" class="clickable search-active">{{ translate "videos" }}</button> <button name="t" value="video" class="clickable search-active">{{ translate "videos" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="music">&#xe423;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="music">&#xe423;</button>
<button name="t" value="music" class="clickable">{{ translate "category_music" }}</button> <button name="t" value="music" class="clickable">{{ translate "category_music" }}</button>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="forum">&#xe0bf;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="forum">&#xe0bf;</button>
<button name="t" value="forum" class="clickable">{{ translate "forums" }}</button> <button name="t" value="forum" class="clickable">{{ translate "forums" }}</button>
</div> </div>
<div id="content2" class="js-enabled"> <div id="content2" class="js-enabled">
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="map">&#xe55b;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="map">&#xe55b;</button>
<button name="t" value="map" class="clickable">{{ translate "maps" }}</button> <button name="t" value="map" class="clickable">{{ translate "maps" }}</button>
</div> </div>
</div> </div>
<div class="search-container-results-btn"> <div class="search-container-results-btn">
<button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t" value="file">&#xe80d;</button> <button id="sub-search-wrapper-ico" class="material-icons-round clickable" name="t"
value="file">&#xe80d;</button>
<button name="t" value="file" class="clickable">{{ translate "torrents" }}</button> <button name="t" value="file" class="clickable">{{ translate "torrents" }}</button>
</div> </div>
</div> </div>
@ -171,4 +191,5 @@
document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled')); document.querySelectorAll('.js-enabled').forEach(el => el.classList.remove('js-enabled'));
</script> </script>
</body> </body>
</html> </html>