poke/html/search.ejs
2024-08-02 10:32:08 +00:00

939 lines
No EOL
36 KiB
Text

<!--
This Source Code Form is subject to the terms of the GNU General Public License:
Copyright (C) 2021-2024 POKETUBE (https://codeberg.org/Ashley/poketube)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/.
-->
<!DOCTYPE html>
<head>
<head>
<title>Searching <%=q%> - PokeTube</title>
<link rel="manifest" href="/manifest.json">
<link href=/css/yt-ukraine.svg?v=6 rel=icon>
<link href=/css/app-cdn.min.css rel=stylesheet>
<link href=/css/app.main.css?v=44600 rel=stylesheet>
<link href=/css/search.main.css?v=547 rel=stylesheet>
<link href=/css/watch.main.css rel=stylesheet>
<meta name="darkreader-lock"> <!-- tells dark reader that the site has a dark theme and to turn itself off -->
<meta content="Searching <%=q%> - Poke" property=og:title>
<% if (q == "do the harlem shake") { %>
<meta content="DO THE HARLEM SHAKE" property=twitter:description>
<% } %>
<% if (q != "do the harlem shake") { %>
<meta content="Ur Searching <%=q%> on Poke!" property=twitter:description>
<% } %>
<meta content="https://cdn.glitch.global/d68d17bb-f2c0-4bc3-993f-50902734f652/aa70111e-5bcd-4379-8b23-332a33012b78.image.png?v=1701898829884" property=og:image>
<meta content=summary_large_image name=twitter:card>
<meta content="#1a1a1a" name="theme-color">
<style>
a.class:hover {
text-decoration:underline;
font-weight:bold
}
summary{
color:blue;
}
summary:hover{
color:red;
}
* {
color:#fff;
}
nav {
background:#111111
}
</style>
<link href=https://p.poketube.fun/https://site-assets.fontawesome.com/releases/v6.1.1/css/all.css rel=stylesheet>
<link href="https://p.poketube.fun/https://cdn.jsdelivr.net/npm/ionicons@4.5.0-0/dist/css/ionicons.min.css" rel=stylesheet>
<style>
.search-options {
display: flex;
justify-content: space-between;
width: 100%;
max-width: 855px;
margin: auto;
padding: 24px 0px 12px 0px;
}
.tags.rec:hover{
overflow-x:auto;
}
.tags.rec {
display: flex;
gap: 12px;
height: max-content;
}
.tags.rec > .tag {
border-radius: 8px;
background: var(--chip-background-hover);
padding: 8px 16px;
}
.tag {
padding: 5px;
border-radius: 4px;
word-break: break-all;
white-space: nowrap;
font-family: ubuntu, sans-serif;
}
#filters-collapse summary {
color: white;
font-weight: bold;
font-size: 20px;
}
.filter-options div {
padding: 6px 12px;
}
.filter-name.underlined {
padding: 12px 0px 12px 23px;
font-weight: bold;
}
.container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #333;
border: 1px solid #ccc;
border-radius: 5px;
text-align:center;
}
.container > * {
text-align:center !important;
}
.info > div {
font-family:Ubuntu, sans-serif;
}
#fetch-spinner {
position: fixed;
top: 10px;
right: 10px;
z-index: 9999;
width: 20px;
height: 20px;
border-radius: 50%;
border-top: 2px solid #fff;
border-right: 2px solid #fff;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
#fetch-text {
position: fixed;
top: 10px;
right: 40px;
color: #fff;
font-weight: bold;
text-transform: uppercase;
z-index: 9999;
}
.hide {
display: none;
}
.app{
/* background-image:url("/css/head.svg"); */
background-size: cover;
background-repeat: no-repeat;
}
.shake {
animation: linear infinite alternate;
animation-name: DOTHESHAKE;
animation-duration: 1.5s;
}
@-webkit-keyframes DOTHESHAKE {
0% {
left: 0;
transform: translateX(0);
}
100% {
left: 900%;
transform: translateX(-90%);
}
}
/* nice classname am i rigth */
.discover-some-bitches{
text-align: center;
width: 673px;
margin: auto;
}
.shelf {
max-width: 51em;
margin: auto;
display: flex;
flex-direction: column;
row-gap: 16px;
padding: 16px;
background: #111111;
border: #333333 solid;
border-radius: 19px;
margin-top: 1em;
}
@font-face {
font-family: 'Ginto Nord';
font-weight: 800;
src:url('https://p.poketube.fun/https://cdn.statically.io/gh/brecert/discord-quote-generator/main/Ginto-Nord-800.woff') format("woff");
}
.video-list > .video {
background: #111;
padding: 10px;
border-radius: 10px;
border: #333 solid;
}
</style>
<style>section p {
font-family:Whitney, Helvetica Neue, Helvetica, Arial, sans-serif;
font-weight:400;
color:#fff;
font-size:16px;
line-height:24px;
margin-top:12px
}
.wiki > p {
margin-top: -2em;
}
* {
text-rendering: auto;
}
.sticky-top {
position: sticky;
top: 0px;
z-index: 999;
}
.responsive {
width: 100%;
overflow-x: auto;
}
.tabs {
display: table;
font-family:inter;
border-collapse: separate;
table-layout: auto;
}
.video:hover{
border:solid;
}
.tabs {
display: table;
font-family:inter;
border-collapse: separate;
table-layout: auto;
}
.tabs.tabs-center {
margin: auto;
}
.tabs.tabs-justify {
width: 100%;
table-layout: fixed;
}
.tabs a.tab {
position: relative;
display: table-cell;
transition: all ease 0.3s;
padding: 1em 1.6em;
transform: translate3d(0, 0, 0);
color: #fff;
white-space: nowrap;
cursor: pointer;
}
.tabs a.tab:hover {
color: #3cb4fa;
}
.tabs a.tab:after {
transition: all 0.3s cubic-bezier(1, 0, 0, 1);
will-change: transform, box-shadow, opacity;
position: absolute;
content: '';
height: 3px;
bottom: 0px;
left: 0px;
right: 0px;
border-radius: 3px 3px 0px 0px;
background: #9fdafd;
box-shadow: 0px 4px 10px 3px rgba(60, 180, 250, .15);
opacity: 0;
transform: scale(0, 1);
}
.tabs a.tab.active {
color: #fff;
}
.tabs a.tab.active:after {
opacity: 1;
transform: scale(1, 1);
}
.something-background-a {
background-image: url('<%- media_proxy_url %>/proxy?url=https://static.wikia.nocookie.net/omori/images/f/fc/Something_Bed_(2018_Demo).gif') !important;
}
.something-background-b {
background-image: url('<%- media_proxy_url %>/proxy?url=https://static.wikia.nocookie.net/omori/images/1/14/Hangman_%28Laptop%29.png') !important;
}
.something-background-c {
background-image: url('<%- media_proxy_url %>/proxy?url=https://static.wikia.nocookie.net/omori/images/6/67/Nanci_Before.png') !important;
}
.loading .spinner {
display: inline-block;
border: 5px solid rgba(255, 255, 255, 0.2);
border-top-color: #fff;
border-radius: 50%;
animation: spin 1s ease-in-out infinite;
width: 50px;
height: 50px;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
.a {
display:none;
}
</style>
</head>
<% if(IsOldWindows) { %>
<style>
.title.max-lines-2 {
font-family:"Inter " !important;
}
</style>
<% } %>
<body>
<div class="app">
<nav>
<div class=left>
<% if (q == "do the harlem shake") { %>
<a class="shake" href="/143" style=font-family:Inter,sans-serif;color:#fff> <img style="transform: scale(1.3);width:8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo.svg?v=5"></a>
<audio class="player" autoplay loop controls src="https://p.poketube.fun/https://tube.kuylar.dev/proxy/media/8vJiSSAMNWw/18?e=ca0ac04022e782540e1f2fe4d6c2994949f33184ccc07568b4b1d7c93dfebd28119cb7b9e8b5db12039ba553ed861736ca0ac04022e782540e1f2fe4d6c2994949f33184ccc07568b4b1d7c93dfebd28119cb7b9e8b5db12039ba553ed861736Piwikd74c7f459daf669799074a22bcf7d79bb66e03dbd9899a2089e0bee8ed383f0c3b928c4477a42208cbd69a77549e3451
" style="display:none;">
<script>
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-3.0-or-later
setTimeout(function () {
const video = document.getElementsByClassName("video")
for(var counter = 0; counter < video.length; counter++){
video[counter].classList.add("shake");
}
}, 13700)
// @license-end
</script>
<% } %>
<% if (q == "do a barrel roll") { %>
<style>
@keyframes barrelRoll {
to {
transform: rotate(360deg);
}
}
body {
animation: barrelRoll 2s alternate; /* Adjust the duration as needed */
}
</style>
<% } %>
<% if (q != "do the harlem shake") { %> <% if (q != "want you gone") { %> <% if (q != "portal 2 ending") { %> <% if (q != "credits") { %> <% if (q != "glados") { %> <% if (q != "something") { %>
<a class="class" href="/143" style=font-family:Inter,sans-serif;color:#fff> <img style="transform: scale(1.3);width:8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo.svg?v=5"></a>
<% } %>
<% } %><% } %>
<% } %>
<% } %>
<% if (q == "want you gone" || q == "portal 2 ending" || q == "credits" || q == "glados ") { %>
<a class="class" href="/credits" style=font-family:Inter,sans-serif;color:#fff> <img style="transform: scale(1.3);width:8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo-orng.svg?v=5"></a>
<% } %>
<% if (q == "something") { %>
<a class="class" href="/143?something=143" style=font-family:Inter,sans-serif;color:#fff> <img style="transform: scale(1.3);width:8.5em;display: block;margin-left: auto;margin-right: auto;" src="/css/logo.svg?v=5"></a>
<% } %>
<% } %>
</div>
<div class="middle">
<div class="search">
<form action=/search><input class=search-bar autocomplete="on" value="<%=q%>" id=fname name=query style="color:#fff;font-family:Inter,sans-serif;border-radius: 8px;">
<button class="btn btn-success" type=submit><i class="fa-light fa-search"></i></button>
</form>
</div> </div>
<div class=right>
<button title="Play/Pause Ambient music" class="a" id="audioButton" onclick="toggleAudio()">
<i id="audioIcon" class="fas fa-pause"></i>
</button>
<a href="/domains"><i style="display: block;margin-left: auto;margin-right: auto;" class="fa-light fa-server"></i> </a>
<a href="/privacy"><i class="fa-light fa-shield"></i></a>
<a href="/video/upload?from="><i class="fa-light fa-video"></i></a>
<a href="https://codeberg.org/Ashley/poketube/issues"><i class="fa-light fa-bug"></i></a>
</div>
</nav>
</div>
</div>
<div class="channel-page" style="background-color: var(--channel-contents-background);">
<div class="search-options">
<div id="filters">
<details id="filters-collapse"> <summary>Filters</summary>
<div id="filters-box"><form action="/search" method="get">
<input type="hidden" name="query" value="<%- q %>">
<input type="hidden" name="continuation" value="<%- continuation %>">
<div id="filters-flex" style="display: flex;gap: 18px;background: #111;border-radius: 1em;padding: 6px;width: fit-content;margin-left: auto;margin-right: auto;"> <div class="filter-column"><fieldset>
<legend><div class="filter-name underlined">Upload date</div></legend>
<div class="filter-options">
<% const selectedDate = date || "none"; %>
<% ['none', 'hour', 'today', 'week', 'month', 'year'].forEach(option => { %>
<div>
<input type="radio" name="date" id="filter-date-<%= option %>" value="<%= option %>" <%= selectedDate === option ? 'checked' : '' %>>
<label for="filter-date-<%= option %>"><%= option === 'none' ? 'Any date' : option === 'hour' ? 'Last Hour' : option === 'today' ? 'Today' : option === 'week' ? 'This week' : option === 'month' ? 'This month' : 'This year' %></label>
</div>
<% }) %> </div> </fieldset></div>
<div class="filter-column"><fieldset>
<legend><div class="filter-name underlined">Duration</div></legend>
<div class="filter-options">
<% const selectedDuration = duration || "none"; %>
<% ['none', 'short', 'long', 'medium'].forEach(option => { %>
<div>
<input type="radio" name="duration" id="filter-duration-<%= option %>" value="<%= option %>" <%= selectedDuration === option ? 'checked' : '' %>>
<label for="filter-duration-<%= option %>">
<%= option === 'none' ? 'Any duration' : option === 'short' ? 'Short (< 4 minutes)' : option === 'long' ? 'Long (> 20 minutes)' : 'Medium (4 - 20 minutes)' %>
</label>
</div>
<% }) %>
</div> </fieldset></div>
<div class="filter-column"><fieldset>
<legend><div class="filter-name underlined">Sort By</div></legend>
<div class="filter-options">
<% const selectedSort = sort || "relevance"; %>
<% ['relevance', 'rating', 'date', 'views'].forEach(option => { %>
<div>
<input type="radio" name="sort" id="filter-sort-<%= option %>" value="<%= option %>" <%= selectedSort === option ? 'checked' : '' %>>
<label for="filter-sort-<%= option %>">
<%= option === 'relevance' ? 'Relevance' : option === 'rating' ? 'Rating' : option === 'date' ? 'Upload Date' : 'View count' %>
</label>
</div>
<% }) %>
</div> </fieldset></div>
<br> <div id="filters-apply"> <button type="submit" style="color:#fff;background:#333;padding:3px;border-radius:11px;margin-top: 6em;">Apply!</button></div>
</div>
</form></div> </details></div>
<div class="tags rec">
<a style=" background: #111;" class="tag">
Videos
</a>
<a href="/web?query=<%=q%>" style="color:#fff;text-decoration:none;display:none;
" class="tag c">
Web </a>
</div>
</div>
<%
const searchStrings = [
"suicide", "self harm", "self-harm", "support", "murder", "how to murder", "kill myself",
"end my life", "depressed", "depression", "lonely",
"hurt myself", "selfharm", "selfharm", "dying", "want to die",
"kill", "die", "family problems", "family issues", "abuse",
"domestic violence", "abusive parents", "family conflict",
"estranged", "disowned", "run away", "runaway"
];
if (searchStrings.some(str => q.toLowerCase().includes(str))) {
%>
<div class="container">
<span style="font-size: 7em; color: pink;margin-bottom: 3em;">❤️</span><br>
<h2 style="font-family: 'PokeTube Flex';font-size: large;text-align: left;font-stretch: ultra-expanded;
font-weight: 1000;">You are not alone</h2>
<p>
If you're having a tough time or know someone who is, reaching out and talking to someone can really help.
</p>
<p>
In the US? Call <strong>988</strong> for support. Not in the US? <a href="https://www.psychologytoday.com/us/basics/suicide/suicide-prevention-hotlines-resources-worldwide">Check out this link</a> for worldwide help.
</p>
<p>
LGBTQ+ and need someone to talk to? Try the <a href="https://www.thetrevorproject.org/">Trevor Project</a> at <strong>1-866-488-7386</strong> or text <strong>START</strong> to <strong>678-678</strong>. For more options, <a href="https://www.imalive.org/">IMAlive</a> is also available.
</p>
<p>
Remember, ur not alone. u matter, and there's always someone who cares. and you are really important btw! <span style="font-family: 'PokeTube Flex';">❤️</span>
</p>
</div>
<% } %>
<%
const fakeNewsSources = {
"InfoWars": {
category: "conspiracy",
reason: "InfoWars has been widely criticized for promoting conspiracy theories and false information. For example, it falsely claimed that the Sandy Hook Elementary School shooting was a hoax.",
link: "https://www.theguardian.com/us-news/2018/oct/15/alex-jones-infowars-sandy-hook"
},
"Breitbart": {
category: "conservative",
reason: "Breitbart is known for its extreme political bias and has spread misleading information. For instance, it has downplayed the severity of COVID-19 and other critical issues.",
link: "https://www.nytimes.com/2020/03/26/us/politics/breitbart-coronavirus.html"
},
"Daily Mail": {
category: "tabloid",
reason: "The Daily Mail is frequently criticized for sensationalism and misinformation. For example, it has published misleading health and science stories.",
link: "https://www.theguardian.com/media/2016/jul/21/daily-mail-fake-news-health-claims"
},
"Natural News": {
category: "pseudoscience",
reason: "Natural News is known for promoting pseudoscience and conspiracy theories, such as false claims about vaccines. It often spreads unverified and harmful information.",
link: "https://www.factcheck.org/2021/01/natural-news-promotes-unfounded-claims-about-covid-19-vaccines/"
},
"RT": {
category: "state-sponsored",
reason: "RT is a state-funded media outlet known for promoting Russian government perspectives and has been criticized for biased reporting on international issues.",
link: "https://www.bbc.com/news/world-europe-32123616"
},
"Sputnik": {
category: "state-sponsored",
reason: "Sputnik, like RT, is known for spreading Russian state propaganda and publishing misleading information about Western countries.",
link: "https://www.reuters.com/article/us-usa-russia-propaganda-idUSKBN1K30NK"
},
"Before It's News": {
category: "conspiracy",
reason: "Before It's News is known for spreading conspiracy theories and fake news, including fabricated stories about global events.",
link: "https://www.snopes.com/fact-check/before-its-news/"
},
"Your News Wire": {
category: "conspiracy",
reason: "Your News Wire is known for publishing false information and conspiracy theories, including fabricated reports on various topics.",
link: "https://www.politifact.com/factchecks/2018/dec/14/your-news-wire/fake-news-purveyor-yournewswire-rebrands-itself-ne/"
},
"WorldTruth.TV": {
category: "conspiracy",
reason: "WorldTruth.TV is known for spreading conspiracy theories and pseudoscience, including false health information and other dubious claims.",
link: "https://mediabiasfactcheck.com/worldtruth-tv/"
},
"NewsPunch": {
category: "conspiracy",
reason: "NewsPunch is known for publishing false information and conspiracy theories, including unsubstantiated claims about political figures.",
link: "https://www.politifact.com/factchecks/2018/dec/14/newspunch/fake-news-purveyor-yournewswire-rebrands-itself-ne/"
},
"Civic Tribune": {
category: "fake-news",
reason: "Civic Tribune is a fake news site known for hoaxes and misinformation, including fabricated stories about political events.",
link: "https://www.snopes.com/fact-check/civic-tribune-hoaxes/"
},
"The Daily Stormer": {
category: "extremist",
reason: "The Daily Stormer is known for promoting hate speech and extremist views, including anti-Semitic and other hateful content.",
link: "https://www.adl.org/resources/backgrounders/daily-stormer"
},
"Times of Israel": {
category: "state-sponsored",
reason: "Times of Israel has been criticized for biased reporting and spreading propaganda, particularly regarding the Israel-Palestine conflict.",
link: "https://www.theguardian.com/world/2018/jul/19/times-of-israel-criticism-jewish-nation-state-law"
},
"Zero Hedge": {
category: "conspiracy",
reason: "Zero Hedge is known for promoting conspiracy theories and financial misinformation, including false claims about market events.",
link: "https://www.bbc.com/news/technology-57001905"
},
"Pravda": {
category: "state-sponsored",
reason: "Pravda is a state-run media outlet known for spreading Russian government propaganda, with a history of biased reporting on international events.",
link: "https://www.bbc.com/news/world-europe-32123616"
},
"Press TV": {
category: "state-sponsored",
reason: "Press TV is known for promoting Iranian government propaganda and often spreads biased information about Western countries.",
link: "https://www.reuters.com/investigates/special-report/usa-iran-press-tv/"
},
"Fox News": {
category: "conservative",
reason: "Fox News is often criticized for extreme political bias and misinformation. For example, it has faced scrutiny for its reporting on the 2020 US election.",
link: "https://www.nytimes.com/2020/11/13/business/media/fox-news-election.html"
},
"The Blaze": {
category: "conservative",
reason: "The Blaze is known for promoting right-wing viewpoints and sometimes misleading information, including false claims about political figures.",
link: "https://www.washingtonpost.com/lifestyle/style/the-blaze-the-conservative-news-site-glenn-beck-started-in-2010-is-no-more/2020/06/16/84506e54-b0a2-11ea-856d-5054296735e5_story.html"
},
"OANN": {
category: "conservative",
reason: "OANN is known for spreading far-right viewpoints and conspiracy theories, including false claims about election fraud.",
link: "https://www.nytimes.com/2021/03/11/us/oann-dominion.html"
},
"Newsmax": {
category: "conservative",
reason: "Newsmax has been criticized for promoting extreme right-wing perspectives and misinformation, including false claims about the COVID-19 pandemic.",
link: "https://www.reuters.com/article/us-usa-election-newsmax-idUSKBN28S2L6"
},
"Al Jazeera": {
category: "state-sponsored",
reason: "Al Jazeera is a Qatar state-funded media outlet with a history of promoting government viewpoints. It has faced criticism for biased reporting on Middle Eastern conflicts.",
link: "https://www.theguardian.com/world/2017/jun/23/al-jazeera-journalists-qatari-state-funded-network"
},
"The Sun": {
category: "tabloid",
reason: "The Sun is known for sensationalism and often publishes exaggerated or false stories, particularly about celebrities and other high-profile topics.",
link: "https://www.bbc.com/news/entertainment-arts-53292953"
}
};
// Normalize search query
const normalizedQuery = q.toLowerCase().replace(/\s+/g, '');
const matchedSource = Object.keys(fakeNewsSources).find(source => normalizedQuery.includes(source.toLowerCase().replace(/\s+/g, '')));
if (q.includes('-showall')) {
%>
<div class="container">
<h2 style="font-family: 'PokeTube Flex'; font-size: large; text-align: left; font-weight: bold;">
<span style="font-size: xx-large; color: red;">🔍</span> Debug mode !
</h2>
<p>
Here are all the sources and their details:
</p>
<ul>
<% Object.keys(fakeNewsSources).forEach(source => { %>
<li>
<strong><%= source %></strong> - <%= fakeNewsSources[source].reason %> <br>
<a href="<%= fakeNewsSources[source].link %>">Read more</a>
</li>
<% }); %>
</ul>
</div>
<% } else if (matchedSource) { %>
<div class="container">
<h2 style="font-family: 'PokeTube Flex';font-size: large;text-align: left;font-stretch: ultra-expanded;
font-weight: 1000;">
<span style="font-size: xx-large; color: red;">🚫</span> <br>
Be Cautious with This Source
</h2>
<p>
Hai there! It looks like you might be looking at info from <strong><%= matchedSource %></strong>, which is known for spreading fake news or propaganda.
</p>
<p>
Here are some quick tips to check if what you're reading is legit:
</p>
<ul style="background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 5px; padding: 15px; list-style-type: none;">
<li style="margin-bottom: 10px;"><strong>Check the source's rep:</strong> Reliable sites usually have a good track record for being accurate and fair.</li>
<li style="margin-bottom: 10px;"><strong>See if other reputable sites are reporting the same news:</strong> If it's just one place, be cautious.</li>
<li style="margin-bottom: 10px;"><strong>Use fact-checking sites:</strong> Try <a href="https://www.snopes.com/">Snopes</a> or <a href="https://www.factcheck.org/">FactCheck.org</a>.</li>
<li style="margin-bottom: 10px;"><strong>Look at the publication date:</strong> Make sure it's current and not out of context.</li>
<li><strong>Check for links and citations:</strong> Good articles usually back up their claims with evidence.</li>
</ul>
<p>
For more info on why <strong><%= matchedSource %></strong> might not be reliable, check out these sources:
</p>
<ul>
<li><a href="<%= fakeNewsSources[matchedSource].link %>"><%= fakeNewsSources[matchedSource].reason %></a></li>
</ul>
</div>
<% } %>
<% if (q.includes("whats your eta")) { %>
<a href="/watch?v=mREOvIgImmo" style="text-align: center;margin-left: auto;margin-right: auto;font-family: 'PokeTube Flex';font-stretch: ultra-expanded;font-weight: 1000;color: #fff;"><h1 style="font-family: 'PokeTube Flex';font-stretch: ultra-expanded;
font-weight: 1000;">2 MINUTES!</h1></a>
<% } %>
<% if (!tab) { %>
<style>
.thumbnail {
position: relative;
display: inline-block;
}
.thumbnail .hover-text {
display: none;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
font-size: 24px;
font-weight: bold;
background-color: rgba(0, 0, 0, 0.5);
padding: 5px 10px;
border-radius: 5px;
z-index: 2;
}
.thumbnail:hover .hover-text {
display: block;
}
.thumbnail .video-length {
position: absolute;
bottom: 10px;
right: 10px;
z-index: 1;
}
.thumbnail:hover .video-length {
display: none;
}
</style>
<% invresults.forEach (x => { %>
<div class="video-list">
<div class="video">
<a href="/watch?v=<%= x.videoId %>"
class="thumbnail"
style="background-image: url('<%- media_proxy_url %>/proxy?url=https://i.ytimg.com/vi/<%= x.videoId %>/hqdefault.jpg?sqp=-oaymwEXCNAFEJQDSFryq4qpAwkIARUAAIhCGAE=&amp;rs=AOn4CLBmAOZV7CM3NdDKlEFxGX7PpI5UWQ');border-radius: 10px;">
<span class="hover-text">Watch :3</span>
<span class="video-length"><%= turntomins(x.lengthSeconds) %></span>
</a>
<div class="info" style="color:#fff;text-align: left;font-weight: 1000;">
<a style="font-family: 'PokeTube Flex';font-size: large;text-align: left;font-stretch: extra-expanded;
font-weight: 1000;" href="/watch?v=<%= x.videoId %>" class="title max-lines-2"><%= x.title %></a>
<div style="display: flex; flex-direction: column; row-gap: 8px;font-weight:bold">
<a href="/watch?v=<%= x.videoId %>"><span><%= x.viewCountText %></span> <span>•</span> <span><%= x.publishedText %></span></a>
<a href="/channel?id=<%= x.authorId %>"><%= x.author %><% if (x?.authorVerified) { %>
<i class="icon ion ion-md-checkmark-circle" title="verified channel"></i><% } %></a>
<div style="display: inline-flex;flex-direction: row;min-width: 6em;gap: 4px;">
<a href="/download?v=<%= x.videoId %>" style="background: #333;width: 7.6em;border-radius: 18px;">
<div style="display: flex;">
<i class="fa-light fa-download" style="display: flex;font-size: 16px;padding: 5px;border-radius: 18px;margin-left: 2px;"></i><span style="margin-top: 6px;">Download</span>
</div>
</a>
<a href="https://youtube.com/watch?v=<%= x.videoId %>" style="background: #333;width: 7.6em;border-radius: 18px;height: 2em;width: 12.5em;">
<div style="display: flex;">
<i class="fa-brands fa-youtube" style="display: flex;font-size: 16px;padding: 5px;border-radius: 18px;margin-left: 2px;"></i><span style="margin-top: 6px;">Open on YouTube :/</span>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
<% }) %>
<audio id="audio" style="display:none;" loop autoplay></audio>
<center> <hr style="clear: both;display: block;border: none;border-bottom: 0.5px solid #2f2f2f;margin: 0 16em;/*! width: 4.5em; */height: 0;margin-top: 1em;">
<div style="border-top: 1px solid var(--border-color);width: 100%;display: flex;gap: 43em;padding: 0;margin: 0;">
<% if (Number(continuation) >= "2") { %>
<p style="text-align: left;margin-left: 16em;color: var(--text-secondary);text-decoration: none;">
<a href="/search?query=<%=q%>">First Page</a> </p>
<p style="text-align: left; color: var(--text-secondary); text-decoration: none;">
<a href="/search?query=<%= q %>&continuation=<%- Number(continuation) + 1 %><% if (date) { %>&date=<%= date %><% } %><% if (duration) { %>&duration=<%= duration %><% } %><% if (sort) { %>&sort=<%= sort %><% } %> ">Next Page</a>
</p>
<% } %>
<% if (Number(continuation) <= "0" || !continuation) { %>
<p style="text-align: left;margin-left: 16em;;color: var(--text-secondary);text-decoration: none;">
<a href="/search?query=<%=q%>&continuation=2<% if (date) { %>&date=<%= date %><% } %><% if (duration) { %>&duration=<%= duration %><% } %><% if (sort) { %>&sort=<%= sort %><% } %>
">Next Page</a>
</p>
<% } %>
</div>
</center>
<% if (!Array.isArray(invresults)) { %>
<br>
<center>
<h1 style="font-family:'Ginto nord';font-weight:900;white-space:yes;">
<img src="https://p.poketube.fun/https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.explicit.bing.net%2Fth%3Fid%3DOIP.GUMY7MavfJyrfhjKbPKB9wHaDt%26pid%3DApi&f=1">
</h1>
<p>A error occured while searching. perhaps try refresing the page lol</p>
<p>
You can try other alternatives to access this resource such as:
<b>
<a href="https://invidio.us/results?q=<%=q%>">Invidious</a>
</b>
or
<b>
<a href="https://tube.kuylar.dev/results?search_query=<%=q%>">lighttube</a>
</b>
</p>
<p>
This page will be refreshed after 10 seconds
</p>
<meta http-equiv="refresh" content="10">
<% } %>
</center>
<% } %>
<% if (tab === "web") { %>
<div class="video-list" >
<% results.forEach(x => { %>
<div class="video" style="height: 6em;">
<a style="min-width: 81em;" href="<%= x.link %>"><%= x.title %></a><br>
<p style="color:gray;display: flex;flex-direction: column;width: 48em;margin-top: -8em;"><%= x.link %><br>
<span style="color:white;width: 48em;display: flex;"><%= x.snippet %></span>
</p>
</div>
<% }) %>
<% } %>
</a>
</div>
<script src="/css/custom-css.js"> </script>
<script>
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-3.0-or-later
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for (let registration of registrations) {
registration.unregister();
}
});
if ('caches' in window) {
caches.keys().then(function(cacheNames) {
cacheNames.forEach(function(cacheName) {
caches.delete(cacheName);
});
});
}
}
document.addEventListener("DOMContentLoaded", function() {
if (localStorage.getItem('liar.')) {
var thumbnails = document.querySelectorAll('.thumbnail');
function changeFavicon(newFaviconUrl) {
var oldFavicon = document.querySelector('link[rel="icon"]');
if (oldFavicon) {
oldFavicon.remove();
}
var link = document.createElement('link');
link.rel = 'icon';
link.href = newFaviconUrl;
document.head.appendChild(link);
}
changeFavicon("<%- media_proxy_url %>/proxy?url=https://static.wikia.nocookie.net/omori/images/d/d8/Something_Float_%282018_Demo%29.gif")
var textList = [
"sunny... i love you",
"SUNNY... I'm... sorry...",
"liar.",
"143",
];
var textElements = document.querySelectorAll('.title');
textElements.forEach(function(element, index) {
element.textContent = textList[index % textList.length];
});
var backgroundClasses = ['something-background-a', 'something-background-b', 'something-background-c'];
thumbnails.forEach(function(thumbnail) {
var randomIndex = Math.floor(Math.random() * backgroundClasses.length);
thumbnail.classList.add(backgroundClasses[randomIndex]);
});
document.title = "sunny..im..sorry"
var audio = new Audio('https://p.poketube.fun/https://cdn.glitch.global/d68d17bb-f2c0-4bc3-993f-50902734f652/Lost_at_Sea.ogg?v=1706879048533');
audio.loop = true;
audio.autoplay = true;
}
});
// @license-end
</script>
</body>